2

私はEmberJSを初めて使用し、ユーザーの新しいジョブを作成できる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

4

1 に答える 1

2

JobsNewRouteURLからにアクセスする場合、UsersControllerは入力されません。したがって、コンテンツへのバインドusersは空JobsNewControllerであり、入力されていないため、役に立ちません。UsersControllerUsersController

これは2つの方法で解決できます。どちらもにあり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());
  }
});
于 2013-03-20T09:44:20.293 に答える