Ember中没有处理事件

x7rlezfr  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(146)

我对Ember有了一个基本的感觉,现在遇到了一些奇怪的问题。这个应用程序非常简单(而且很难看)。在一个特定的路径(/stack)上,我列出了属于这个堆栈的一堆卡片。StackController是一个数组控制器,因为它从本质上检索属于它的一堆卡片

StackController = Ember.ArrayController.extend();

StackRoute = Ember.Route.extend({
    model: function(){
         return App.Card.find();
    }
});

然后在我的模板中,我使用#each helper简单地循环它,以显示卡片的属性('front'),如下所示:

<ul>
{{#each}}
 <li>{{front}}</li> <button {{action 'backside' this}}>View</button>
{{/each}}
</ul>

到目前为止,一切都正常工作。但是,当我单击“View”按钮触发“backside”事件时,它会产生一个:

“Nothing handled the event 'backside'“错误。有点失望,因为它应该这样做似乎很基本,哦,是的,我确实在我的控制器中显式指定了'backside'事件,如下所示:

StackController = Ember.ArrayController.extend({

   actions:{
      backside:function(){
           alert("backside event handled");
     }
    }
});

要查看更详细的内容,请参阅jsBin:
http://jsbin.com/AHiTicU/5/edit
我做错了什么?

  • JSBIN中的代码是准确的,但是这里可能有一些错别字(不太可能,但请注意)。*
8xiog9wr

8xiog9wr1#

您使用的是ember-1.0.0-rc.6,在该版本中,您需要使用action将action处理程序放在route内部,放在一个具有名为events的键的对象中,如下所示:

App.StackRoute = Ember.Route.extend({

        model: function(){     
                return App.Card.find();         // must substitute this with this.store.find('card'); 
        },
        events:{
                backside:function(){            
                        alert('working');               
                }
        }
});

更新了jsbin http://jsbin.com/AHiTicU/6/edit
我推荐你使用最新的版本,目前1.2.0,你可以在emberjs网站http://emberjs.com/的主页上获得。
因此,您当前的代码将以http://jsbin.com/AHiTicU/9/edit的方式工作

相关问题