我有jsbin。我的问题是我试图触发action
:
<a {{action controllers.nodesIndex.destroyAllRecords this}}><i class="icon-remove-circle"></i><a/>
但我得到了:
Uncaught Error: Nothing handled the event 'controllers.nodesIndex.destroyAllRecords'
(您可以通过按右上角的小图标icon-remove-circle
来触发,并检查js控制台上的错误)
但我的控制器设置正确:
App.NodesIndexController = Ember.ArrayController.extend({
destroyAllRecords: function () {
console.log('destroyAllRecords called');
},
});
我在这里缺少什么?
答案 0 :(得分:2)
由于nodes/index
模板的控制器是App.NodesIndexController
,您需要将其称为controllers.nodesIndex.destroyAllRecords
,默认目标为App.NodesIndexController
,因此您可以如@Thomas所说,<a {{action destroyAllRecords}}>
说。
另外,要获取记录的长度,只需说出{{this.length}}
而不是{{controllers.nodesIndex.length}}
。
我已更新您的jsbin,
只有当您指的是模板的控制器以外的其他控制器时,您才需要说'controllers.controllername.methodname'
,并且您需要在需求列表中提供控制器的名称,
比如,如果你想从你的'nodes / index'模板调用你'profile'路线的方法,
然后
App.NodesIndexController = Ember.ArrayController.extend({
needs: ['profile'],
});
并在您的模板中
<a {{action controllers.profile.methodname}}>
希望它有所帮助。
更新:请参阅注释
中的解决方案和bin