请参阅: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),我想允许用户将其更改为可用作者之一,然后将新选择的作者绑定到出版物模型,保存后,新作者将被保存。
答案 0 :(得分: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
绑定到某个类而不是某些内容,要正确设置我已经定义了PublicationsEditControllet
以通过对AuthorsController
的需求API访问权限来确定含量:
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
});
我想现在应该可以使用,让你更进一步。
希望它有所帮助。