2

我是 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 时,它无法用数据填充选择。如何强制 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 的提示

4

1 回答 1

2

当您JobsNewRoute从 URL 访问时,UsersController不会填充 。所以绑定users到内容是没有用的,因为JobsNewController它是空的并且没有被填充。UsersControllerUsersController

您可以通过两种方式解决此问题,两者都在JobsNewRoute.

第一种方式,更新你JobsNewRoute的填写UsersController

JP.JobsNewRoute = Ember.Route.extend({
  setupController: function(controller, model) {
    this.controllerFor('users').set('content', JP.User.find());
  }
});

另一种方法是删除和之间的绑定JobsNewController.users,并简单地UsersController填写:JobsNewController.usersJobsNewRoute

JP.JobsNewController = Ember.ObjectController.extend({
  users: []
});


JP.JobsNewRoute = Ember.Route.extend({
  setupController: function(controller, model) {
    controller.set('users', JP.User.find());
  }
});
于 2013-03-20T09:44:20.293 回答