2

Emberドキュメントによると、EmberJS最新1.7.0を使用してSPAを開発しています。ルートにはコントローラーへの参照を保持するプロパティが含まれていますが、すべてのルートで常に未定義を返します。

ApplicationRoute = Ember.Route.extend({
  queryParams: {
      tsk: {
          // Opt into full transition
          refreshModel: true
      }
  },
  model: function(params) {
      var task = {"name" : "task"};

      this.controller.set('currentTask',task);
      return task;
  }
});

また、別のルートで

SubfileRoute = Ember.Route.extend({
  model : function(params) {

      console.log(this.controllerName);
      console.log(this.controller);

  }
});

console.log(this.controllerName);との両方console.log(this.controller);が未定義です。

ember コントローラーを適切に操作するにはどうすればよいですか? 機能しているように見える唯一の方法は、 this.controllerFor() を使用することです

アップデート:

私もこの方法を使用しようとしました:

needs:'application',
currentTask : Ember.computed.alias('controllers.application.currentTask'),

しかし、 currentTask は常に未定義であるため、コントローラー自体も同様です。

4

1 に答える 1

5

コントローラーでプロパティを設定する場合は、setupController フックを使用する必要があります。

model: function(params) {
  return {"name" : "task"};
},

setupController: function(controller, task) {
  controller.set('currentTask',task);
}
于 2014-09-29T12:18:54.767 に答える