我需要从另一个视图访问ApplicationView,我可以使用App.__container__.lookup('view:application')
这样做。
__container__
是否打算以这种方式使用?
是否有更好的方法来访问视图实例?
(更新) 我的用例:
答案 0 :(得分:1)
不要使用它。其中一位核心开发人员表示,只要有人试图使用App.__container__
,他就会添加另一个下划线。
如果您真的想要访问Ember.View,请使用Ember.View.views['foo']
。其中foo
是视图实例的elementId
。
因此,例如,如果您想要App.ApplicationView
实例:
App.ApplicationView = Ember.View.extend({
elementId: 'application'
});
// somewhere else in your code
var applicationViewInstance = Ember.View.views['application'];
话虽如此,我从未遇到过需要访问这样的视图实例的情况。如果您可以发布您的用例,我可以建议其他方法。
UPDATE :您想要从其他视图实例(视图高度和宽度)访问视图实例的某些属性。您可以将这些属性传递给控制器,让其他控制器访问它们以便在其他视图中使用它们(源视图 - >源控制器 - >其他一些控制器 - >其他视图):
App.ApplicationView = Ember.View.extend({
didInsertElement: function() {
var controller = this.get('controller'),
height = this.$().height(),
width = this.$().width();
controller.setProperties({
height: height,
width: width
});
}
});
App.SomeotherController = Ember.Controller.extend({
needs: ['application'],
applicationViewWidthBinding: 'controllers.application.width',
applicationViewHeightBinding: 'controllers.application.height'
});
App.SomeOtherView = Ember.View.extend({
// assuming its controller is an instance of App.SomeotherController
applicationViewWidthBinding: 'controller.applicationViewWidth',
applicationViewHeightBinding: 'controller.applicationViewHeight'
});