1

我有以下设置:

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.

4

1 回答 1

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 上调用方法。

于 2013-09-14T04:21:04.350 回答