我正在寻找一种方法来扩展Ember的Object以包含一些额外的方法,以便它们在我的应用程序中的每个对象(View,ArrayController等)都可用.
具体来说,我想定义一些方法,介绍控制器,模型,视图,模板,帮助器等的一些命名约定.
例如:
如果查看的类名ArticlesListView,然后它的相关模型Article,控制器动作被命名为list中ArticlesController,模板是在app/articles一个名为list.js.hjs...
例如,最终结果应该是App.ArticlesListView.model()返回App.Article.
那么如何扩展核心Ember对象呢?
Ember.Object.extend({ // <--- ???
model: function(context, params){
}
});
Run Code Online (Sandbox Code Playgroud)
增强现有对象的一般问题的答案是使用reopen:
Ember.Object.reopen({
foo: function(){
return 'bar';
}
});
Run Code Online (Sandbox Code Playgroud)
至于你更具体的问题,那就更具挑战性了.对象通常不知道它所分配的属性的名称.您可以通过遍历命名空间(包括App)的属性并找到与当前类匹配的属性来实现目标.您可以缓存该属性名称以用于将来的性能.
另一种方法是定义一个辅助方法,用于定义将名称传递给的新模型,控制器等.该方法可以处理创建子类,将其分配给App的属性,以及使用名称设置实例变量.
| 归档时间: |
|
| 查看次数: |
1490 次 |
| 最近记录: |