Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ember.js视图值到控制器绑定_Javascript_Ember.js - Fatal编程技术网

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

Javascript Ember.js视图值到控制器绑定,javascript,ember.js,Javascript,Ember.js,假设我有一个视图,其中这个.controller是应用程序\控制器,那么如何将此视图的值绑定到另一个\控制器。视图是一个文本字段 视图(此视图的上下文中有一个应用程序\u控制器): 搜索控制器: CellarRails.SearchController = Ember.ArrayController.extend({ content: [], query: '' }); 搜索路径(这里我获取搜索控制器的查询属性,我想与视图绑定): 我可以扩展应用程序控制器并向其添加needs:'sea

假设我有一个
视图
,其中
这个.controller
应用程序\控制器
,那么如何将此视图的
绑定到另一个\控制器。视图是一个
文本字段

视图(此视图的上下文中有一个应用程序\u控制器):

搜索控制器:

CellarRails.SearchController = Ember.ArrayController.extend({
  content: [],
  query: ''
});
搜索路径(这里我获取搜索控制器的查询属性,我想与视图绑定):


我可以扩展应用程序控制器并向其添加
needs:'search'
,这样我就可以执行
this.controller.search.get('query')
来获取搜索控制器的查询属性吗?

只是一些注释,是的,您可以扩展应用程序控制器并添加needs search

 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将其传递给设置控制器

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

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

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

希望有帮助。

你能分享一些代码吗?舒尔,查看更新的帖子你是对的,我没有注意到我在使用ember查询库。@Nikita,作为最佳实践,你的视图不应该知道你的控制器,但反过来说。在视图绑定到的控制器上创建一个计算属性,然后在CP内可以访问controllers.search.query。在我看来,这就是解决问题的方法。IIRC,双“get”是没有必要的。这个.get('controllers.search.query')也应该可以工作。@JavonHarper谢谢你的评论,你说得绝对正确!
  setupController: function(controller, model) {
    controller.set('model', model);
       or
    this._super(controller, model);
  }
this.get('controllers.search').get('query');