Ember.js查看控制器绑定的值

时间:2013-08-09 13:39:11

标签: javascript ember.js

假设我有view this.controllerapplication_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')获取搜索控制器的查询属性吗?

2 个答案:

答案 0 :(得分:3)

你几乎已经回答了这个问题,这是最后一点。

添加需求后,您可以执行以下操作:

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

希望它有所帮助。

答案 1 :(得分: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将它传递给设置控制器