Sep*_*phy 9 reference view ember.js
我在网上看到了很多关于这个问题的问题(SOF和谷歌),但到目前为止还没有明确答案.
我有一个通常的Ember应用程序,具有各种视图和控制器.我的一个视图有一个实例方法,我想从静态上下文调用.因此在一个普通的javascript文件中.我应该引用ember实例化的视图来调用方法吗?
几行代码来说明我的问题:
在ApplicationView.js中:
App.ApplicationView = Em.View.extend({
templateName: 'application',
myInstanceMethod:function () {
this.anotherInstanceMethod(some, params);
},
// ... more code
});
Run Code Online (Sandbox Code Playgroud)
在MyUtils.js中:
var myUtils = myUtils || {
myMethod: function() {
myApplicationViewInstance.myInstanceMethod();
}
};
Run Code Online (Sandbox Code Playgroud)
这是我个人解决这个问题的方法.我使用Ember.View的"didInsertElement"在一个中心位置注册View.这适用于单例视图.对于非单例视图,必须开发更复杂的ViewRegistry.
灰烬部分
var App = Ember.Application.create({
viewRegistry : {
applicationView : null
},
});
App.ApplicationView = Ember.View.extend({
templateName : 'application',
didInsertElement : function(){
App.set("viewRegistry.applicationView", this);
}
});
Run Code Online (Sandbox Code Playgroud)
在MyUtils.js中:
var myUtils = myUtils || {
myMethod: function() {
App.get("viewRegistry.applicationView").myInstanceMethod();
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2955 次 |
| 最近记录: |