在ember中选择不加载数据 - 是否有工作示例?

时间:2013-03-20 09:01:00

标签: select ember.js

我是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提示

1 个答案:

答案 0 :(得分:2)

当您从网址访问JobsNewRoute时,未填充UsersController。因此,usersJobsNewController内容绑定UsersController将无用,因为UsersController为空并且未填充。

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

首先,更新您的JobsNewRoute以填充UsersController

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

另一种方法是删除JobsNewController.usersUsersController之间的绑定,只需填写JobsNewController.users中的JobsNewRoute

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


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