2

である があるとします。このビューをにバインドするviewthis.controllerapplication_controllerどうすればよいですか。ビューは.valueanother_controllerTextField

ビュー (このビューのコンテキストには application_controller があります):

CellarRails.SearchTextField = Ember.TextField.extend({
  templatename: 'index',
  insertNewline: function(){
    this.get('controller').transitionToRoute('search');
  }
});

検索コントローラー:

CellarRails.SearchController = Ember.ArrayController.extend({
  content: [],
  query: ''
});

検索ルート (ここでは、ビューにバインドする検索コントローラーのクエリ プロパティを取得します):

CellarRails.SearchRoute = Ember.Route.extend({
  serializeParams: function(controller) {
    return {
      query: controller.get('query')
    };
  },
  setupController: function(controller, context, params) {
    console.log(params);
    controller.set('context', CellarRails.Track.find(params));
  }
});

検索コントローラーのクエリ プロパティを取得するために、アプリケーション コントローラーを拡張して追加needs: 'search'することはできますか?this.controller.search.get('query')

4

2 に答える 2

3

あなたはほとんど自分で質問に答えました。これが最後のビットです。

ニーズを追加した後、次のことができます。

this.get('controllers.search').get('query');

それが役に立てば幸い。

于 2013-08-09T14:39:15.130 に答える
2

いくつかのメモ、はい、アプリケーションコントローラーを拡張して、ニーズ検索を追加できます

 CellarRails.ApplicationController = Ember.Controller.extend({
    needs: ['search'],
    someMethod: function(){
      // this would be the query property from the search controller
      var query = this.get('controllers.search.query');
    }
 });

また、おそらくこの部分はあなたのために働いているので、私を無視してください。ただし、setupController フックに 3 つのパラメーターがあるとは思いません。

  setupController: function(controller, model) {
    controller.set('model', model);
       or
    this._super(controller, model);
  }

そしてモデルフックはパラメータを取得するものであり、emberはそれをセットアップコントローラに渡します

于 2013-08-09T14:38:21.333 に答える