2

我正在为我的应用程序使用 ember 工具。现在我想添加一个 TextField 来触发我的控制器中的搜索,就像在这个例子中一样。这是控制器和视图:

产品控制器:

var ProductsController = Ember.ArrayController.extend({
  search: function(query) {
    console.log(query);
  }
});

module.exports = ProductsController;

搜索字段视图:

var SearchFieldView = Ember.TextField.extend({
  insertNewline: function() {
    var query = this.get('value');
    App.ProductsController.search(query);
  }
});
module.exports = SearchFieldView;

但是每当文本字段发生变化时,我都会收到App.ProductsController没有方法的错误search。所以我有一种感觉,它不是我创造的,而是生成的。

4

2 回答 2

1

您可以使用 this.get('controller') 获取当前控制器实例。或者如果你需要另一个控制器实例,你可以使用 this.get('controller').get('controllers.anothercontroller').. JSBin

希望能帮助到你。

于 2013-07-24T03:23:33.027 回答
0

好的,我明白了。App.ProductsController不是实际控制器的实例,并且由于路由下的所有视图都具有相同的控制器,因此它只是this.get('controller')

var SearchFieldView = Ember.TextField.extend({
  insertNewline: function() {
    var query = this.get('value');
    this.get('controller').search(query);
  }
});
module.exports = SearchFieldView;
于 2013-07-23T21:28:12.160 回答