我正在为我的应用使用ember工具。现在我想添加一个TextField来触发我的控制器中的搜索,比如在this example.这是控制器和视图:
的ProductsController:
var ProductsController = Ember.ArrayController.extend({
search: function(query) {
console.log(query);
}
});
module.exports = ProductsController;
SearchFieldView:
var SearchFieldView = Ember.TextField.extend({
insertNewline: function() {
var query = this.get('value');
App.ProductsController.search(query);
}
});
module.exports = SearchFieldView;
但是每当文本字段发生变化时,我都会遇到App.ProductsController
没有方法search
的错误。所以我感觉它不是我创造的那个,而是生成的那个。
答案 0 :(得分:1)
您可以使用this.get('controller')获取当前控制器实例。或者如果你需要另一个控制器实例,你可以使用this.get('controller')。get('controllers.anothercontroller').. JSBin
希望它有所帮助。
答案 1 :(得分: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;