1

见:http: //jsfiddle.net/cyclomarc/VXT53/8/

我有一个选择视图,我只想在其中列出灯具数据中可用的所有作者。因此,我尝试使用一个单独的控制器,我想在其中设置 content = App.Author.find(),但这不起作用......

App.AuthorsController = Ember.ArrayController.extend({
  //content: App.Store.findAll(App.Author)
  //content: App.Author.find()
});

然后我想在selectView中使用AuthorController进行contentBinding,但这也不成功......

{{view Ember.Select
       contentBinding="App.AuthorsController"
       optionValuePath="content.id"
       optionLabelPath="content.name" 
       valueBinding="App.PublicationsEditController.author"
       prompt="Select an author"
   }}

用例是我有一个出版物,其中设置了作者(例如 Marc),我希望允许用户将其更改为可用作者之一,然后将新选择的作者绑定到出版物模型,以便在保存新作者已保存。

4

1 回答 1

1

我猜这就是你所追求的:http: //jsfiddle.net/VXT53/10/

我必须做一些更改,首先是您的路由器映射稍有错误,该edit段必须在 id 之后以匹配您的模板名称pulications/edit

App.Router.map(function () {
  this.resource('publications', { path: '/' }, function () {
    this.route("edit", { path: "/edit/:publication_id" });
  });
});

Ember.Select将 where 绑定到一个类而不是某些内容,为了正确设置它,我已经定义了一个PublicationsEditControllet通过需要 API 访问该AuthorsController内容的需求:

App.PublicationsEditController = Ember.ObjectController.extend({
  needs: ['authors'],
  ...
});

这就是您如何将其用于您的选择:

{{view Ember.Select
   contentBinding="controllers.authors.content"
   optionValuePath="content.id"
   optionLabelPath="content.name" 
   valueBinding="content.name"
   selectionBinding="selectedAuthor"
   prompt="Select an author"
}}

此外,我创建了一个setupController钩子,用于将AuthorsController' 的内容设置为作者列表:

App.PublicationsRoute = Ember.Route.extend({
  model: function () {
    return App.Publication.find();
  },
  setupController: function(controller, model) {
    this._super(controller, model);
    this.controllerFor('authors').set('content', App.Author.find());
  }
});

最后在你身上PublicationsEditController附加了一个新属性selectedAuthor,用于保存当前选定的作者以进行绑定等。

App.PublicationsEditController = Ember.ArrayController.extend({
  needs: ['authors'],
  selectedAuthor: null
});

我想这现在应该可以工作了,让你更进一步。

希望能帮助到你。

于 2013-08-13T21:32:20.143 回答