我有以下设置:
App.AreasController = Ember.ArrayController.extend({
itemController: 'area'
});
// In my project route:
setupController: function(controller, model) {
this.controllerFor('areas').set('content', model.areas);
}
在我看来,我正在编辑我的App.Areas
,并希望从我的视图中为给定的area
调用一个控制器方法(itemController)。我该怎么做?
如果我尝试访问控制器area.get('controller')
(其中area
代表model.areas
中的一个项目),则会返回unknown
。
如果我area.send('save')
,我会遇到Error: Attempted to handle event 'save' on <App.Area:ember1013:5230a2ee945f3b718a00006e> while in state root.loaded.saved.
的错误。有关如何解决此问题的任何想法?
答案 0 :(得分:0)
我想你会想要这样的东西:
{{#each}}
<li {{action toggleEdit}}>
<!-- Other stuff goes here -->
</li>
{{/each}}
App.AreaController = Ember.ObjectController.extend({
isEditing : false,
toggleEdit : function(){
this.set('isEditing', !this.get('isEditing'));
}
});
这是一个总体思路的JSBin:http://jsbin.com/ucanam/1045/edit
在您的视图中,“下一级”是itemController,而不是项本身。您实际上不需要尝试从项目中获取控制器,因为控制器位于视图和项目之间。所以,你只需要直接在itemController上调用方法。