Ember.js视图值到控制器绑定

Ember.js view value to controller binding

本文关键字:控制器 绑定 js 视图 Ember      更新时间:2023-09-26

假设我有一个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')来获得搜索控制器的查询属性吗?

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

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

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

希望能有所帮助。

只是一些注意事项,是的,您可以扩展应用程序控制器并添加需要搜索的

 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);
  }

模型钩子是获取params的钩子,ember将其传递给设置控制器