假设我有view
this.controller
为application_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')
获取搜索控制器的查询属性吗?
答案 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将它传递给设置控制器