不再有“一种方法”可以访问不同控制器的属性。这取决于您想从哪里访问它。
从另一个控制器访问一个控制器:
使用控制器的needs
依赖
例子:
App.PostsController = Em.ArrayController.extend({
someValue: 1
});
App.CommentsController = Em.ArrayController.extend({
needs: ['posts'],
postsValuePlusOne: function() {
return this.get('controllers.posts.someValue') + 1;
}).property('controllers.posts.someValue')
});
从路由访问控制器:
App.PostsController = Em.ArrayController.extend({
someValue: 1
});
App.CommentsRoute = Em.Route.extend({
renderTemplate: function() {
var someValue = this.controllerFor('posts').get('someValue');
}
});
从视图访问控制器:
App.PostsController = Em.ArrayController.extend({
someValue: 1
});
App.PostsView = Em.View.extend({
someValueBinding: 'controller.someValue'
});
如果要访问视图控制器以外的控制器的值(例如 CommentsController,请使用控制器的需求:controller.controllers.comments.someValue
最后,
有一种访问任何控制器的全局方法,但仅用于调试和测试,从不在生产环境中使用:
var postsController = App.__container__.lookup('controller:posts')