2

假设我有一个viewwhich this.controlleris application_controller,那么如何value将此视图绑定到another_controller. 视图是一个TextField.

视图(在这个视图的上下文中有一个 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 回答