我正在爲我們公司設計Intranet Web應用程序。其中一個應用程序。要求是提供「widget」平臺。這意味着開發人員可以創建迷你應用程序,該應用程序可以在主要Web應用程序中運行,並可以使用它的資源。小部件可以獨立於應用程序,並且可以擁有自己的數據模型和行爲。我的任務是在應用程序中提供小部件抽象和小部件引擎(小部件在應用程序頁面上管理和組織)。我回顧了幾個JS「MV *」框架,它看起來像Ember.js是我想要使用的。但我無法理解如何在Ember中區分小部件和應用程序之間的抽象功能。從一方面來說,主要的應用程序是Ember應用程序本身,它管理當前窗口小部件的外觀,從其他窗口小部件到應用程序。是否有可能在灰燼嵌套的應用程序,這樣可以使這樣的:?Ember嵌套應用程序和小部件
Widgets.SpecificWidget1 = Em.Application.extend({
name:"I'm custom widget",
ready:function(){alert('Widget app Ready')}
});
App = Em.Application.create({
rootElement:"#widgetsPanel",
ready:function(){alert('main app Ready')}
});
App.WidgetsController = Em.ArrayController.create({
widgets:[Widgets.SpecificWidget1.create(),
Widgets.SpecificWidget1.create(),
Widgets.SpecificWidget1.create()]
});
App.WidgetsView = Em.View.extend({
});
<div id="widgetsPanel"></div>
<script type="text/x-handelbars">
<ul>
{{#each App.WidgetsController}}
{{#view App.WidgetsView contentBinding="this"}}
<li>{{content.name}}</li>
{{/view}}
{{/each}}
</ul>
</script>
如果這種方式是不正確的做到這一點,你可以告訴什麼是更好的方式來做到這一點THX
THX的答案。你的例子描述了我的「應用程序」設計。這就是我在頁面上管理小部件的方法,但小部件本身更復雜,只是模型。就我而言,小部件模型包含有關小部件的信息(控制路徑,最小化/最大化...)。小部件本身將擁有自己的一組模型,視圖和控制器。所以它看起來小部件應該是應用程序。但可能的其中一種方式是,小部件只是在主應用程序中「註冊」模型和視圖,主應用程序將管理它們......也許這是更正確的方法:) – 2012-02-08 20:31:03