我是Ember JS的新手,我正在试图弄清楚如何创建Ember.Select,这将允许为用户创建新的工作。
这是我的form.handlebars代码的一部分:
{{view Ember.Select viewName="job-user"
contentBinding="users"
optionLabelPath="content.name"
optionValuePath="content.id"
}}
我在JobsNewController里面:
JP.JobsNewController = Ember.ObjectController.extend({
needs: ['users'],
users: [],
usersBinding: "controllers.users"
});
这就是我的UsersController的样子:
JP.UsersController = Ember.ArrayController.extend();
当我从支持UserController的屏幕进入newJob屏幕时,它正在工作,但是当我直接转到jobs / new时,它无法用数据填充select。如何强制Ember加载此选择的数据?
编辑: 我必须正确设置路线:
JP.JobsNewRoute = Ember.Route.extend( JP.JobsFormable, {
model: function() {
return JP.Job.createRecord();
},
setupController:function(controller,model) {
this._super(controller,model);
controller.set('usersForSelect', JP.User.find());
}
});
我还修改了表格:
{{view Ember.Select viewName="job-user"
contentBinding="usersForSelect"
optionLabelPath="content.name"
optionValuePath="content.id"
}}
感谢@mavilein提示
答案 0 :(得分:2)
当您从网址访问JobsNewRoute
时,未填充UsersController
。因此,users
与JobsNewController
内容绑定UsersController
将无用,因为UsersController
为空并且未填充。
您可以通过两种方式解决此问题,两者都在JobsNewRoute
。
首先,更新您的JobsNewRoute
以填充UsersController
:
JP.JobsNewRoute = Ember.Route.extend({
setupController: function(controller, model) {
this.controllerFor('users').set('content', JP.User.find());
}
});
另一种方法是删除JobsNewController.users
和UsersController
之间的绑定,只需填写JobsNewController.users
中的JobsNewRoute
:
JP.JobsNewController = Ember.ObjectController.extend({
users: []
});
JP.JobsNewRoute = Ember.Route.extend({
setupController: function(controller, model) {
controller.set('users', JP.User.find());
}
});