Len*_*ijn 6 javascript model-view-controller jquery ember.js
我已经用Javascript编程了一段时间.最近我制作了一个非常庞大的jQuery项目并应用了这篇精彩文章中描述的模块模式:http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth
这一切都很好,花花公子,代码看起来光滑,易于管理,但我觉得它可能会更好.我花了一天时间寻找一些Javascript框架,主要是:
我偶然发现了像AngularJS,KnockOutJS,SpineJS,JavascriptMVC等框架.真正引人注目的 - 并且备受赞誉的是EmberJS.
我决定尝试一下,但这并不容易.EmberJS教程的可用性非常有限.经过很长一段时间的努力,我设法让一些东西运转起来,我喜欢EmberJS的作品!只有一件事我似乎无法弄清楚 - 这也是我的问题:如何扩展Ember命名空间(使用Ember.Application.create制作)?
为了澄清:我的项目的旧版本有一个Core-namespace和一个Util-namespace.两者都包含其所有其他类可以使用的各自的功能.如何在初始命名空间之上使用具有函数的Core-和Util-命名空间?
我只是这样做:
MyNamespace = Ember.Application.create();
MyNamespace.Core = Ember.Application.create();
MyNamespace.Util = Ember.Application.create();
Run Code Online (Sandbox Code Playgroud)
或者是其他东西?
pan*_*atz 10
你不能嵌套Ember.Namespace(Ember.Application作为子类Ember.Namespace),见问题#683.
作为核心贡献者之一的Tome Dale为复杂应用程序的布局添加了一个有趣的答案,请参阅评论.
因此,您可以App = Ember.Application.create()在此命名空间下使用和创建控制器,视图等.或者您可以 - 如果您打算在其他项目/应用程序中重用某些代码 - 将命名空间拆分为:
Util = Ember.Namespace.create({
importantNames: 'Einstein'.w()
});
Core = Ember.Namespace.create({
sqrt: function(x) { return Math.sqrt(x); }
});
App = Ember.Application.create();
...
App.myListController = Ember.Object.create({
importantNamesBinding: 'Core.importantNames',
sqrtBinding: 'Util.sqrt'
});
Run Code Online (Sandbox Code Playgroud)
一个Ember.Application延伸Ember.Namespace,并增加了有关处理事件的功能(点击......).当你写一个享有申请这个东西是有用的-在你Core和Util命名空间,你就不需要的东西,这就是为什么这只是一个Ember.Namespace.
| 归档时间: |
|
| 查看次数: |
1916 次 |
| 最近记录: |