我的兩難處境是,在dojo文檔中建議AMD模塊不應設置或讀取全局變量。但是,假設您的數據模型包含許多獨立窗口小部件(因此它是一個共享模型)使用的屬性,那麼期望每個窗口小部件都保存它自己的數據模型對象實例是不合理的。那麼你在哪裏放置它,以便所有需要獲取和設置屬性或觀看屬性更改的小部件都可以這樣做?您將數據模型放在dojo應用程序中的哪個位置?
3
A
回答
5
您可以使用Singletone模式。
單身減少全局變量的需求,因爲它限制命名空間污染和 相關的名稱衝突的風險是在JavaScript中尤爲重要 。 Source。
要在Dojo中實現Singletone模式,您可以創建一個AMD模塊,這是一個單音對象。
在以下示例中,您定義了一個名爲App
的AMD模塊。 「公共」屬性data
可能包含代表您的共享數據的任何對象,因此您可以在與AMD模塊分離的小部件中使用它。
函數init
可用於初始化單音對象並填充屬性data
(例如向您的服務器API發出請求)。
bootstrap
AMD模塊(這是你的應用程序的入口點),顯示瞭如何時,你需要讓你的小部件中的「共享」的數據加載首次app
AMD模塊,並對其進行初始化,從你那點可以請求應用和數據app().data
;
app.js文件
define([
], function (
) {
'use strict';
var _instance;
function _App() {
}
_App.prototype = {
// data: [public] Object
// Data for your app.
data: null,
init: function() {
// summary:
// Initializes and fetch some data from the server.
}
};
return function _getSingleton() {
// summary:
// Gets singleton object.
return (_instance = (_instance || new _App()));
};
});
bootstrap.js文件
require([
'app'
], function (
app
) {
'use strict';
// module:
// bootstrap
// summary:
// Application bootstrap with the main responsibility to initiate modules (single tones).
// initializes module app
app().init();
});
相關問題
- 1. AMD/Dojo 1.7單頁應用程序:將Require()的位置放在哪裏?
- 2. 數據模型在Prism應用程序中的位置在哪裏?
- 3. 你將全球應用程序數據放在iPhone應用程序中的哪個位置?
- 4. 將全局應用程序數據放在Vista中的位置?
- 5. WCF/WebSerices應該放在Silverlight應用程序的哪個位置?
- 6. iPhone MVC應用程序:我應該在哪裏放置模型?
- 7. 將handlebars模板放在nodejs + emberjs應用程序中的位置?
- 8. SQLite數據庫放在UWP應用程序中的位置
- 9. 將應用程序設置放在JSF中的位置
- 10. 應用程序的位置在哪裏?
- 11. 從哪裏開始將WebDAV放入您的應用程序
- 12. 將應用程序邏輯放在Thruway應用程序中的位置?
- 13. 放置應用程序數據的最佳位置?
- 14. Java - 在哪裏放置應用程序數據?
- 15. 將數據存儲在GUI應用程序中的位置?
- 16. localForage數據將存儲在iPad應用程序中的位置?
- 17. 將位置代碼放置在選項卡式應用程序中的位置?
- 18. 你把全局變量放在WPF應用程序中的哪個位置?
- 19. 將LICENSE文件放在Symfony應用程序中的位置?
- 20. 通常,將SQL查詢放在應用程序中的位置?
- 21. 將META-INF/services/java.sql.Driver放在web應用程序中的位置
- 22. 將grunt文件放在Spring Web應用程序中的位置
- 23. 將Asynctask放在應用程序中的位置
- 24. 將getclicky代碼放在rails3應用程序中的位置
- 25. 將重複任務放在Grails應用程序中的位置?
- 26. 在MVC應用程序中將實體框架數據模型放在哪裏?具體的例子
- 27. 計算列應該在MVVM模型中的哪個位置?
- 28. 在angularJS應用程序中保留模型的位置?
- 29. Android根據用戶位置啓動您的應用程序
- 30. 將應用程序代碼放在QT應用程序上的位置?
_App已經是一個功能? – erotavlas
@erotavlas在javascript中,函數是第一個類對象,下面的代碼_App必須是一個函數。我希望這個答案能幫助你。如果您需要更多信息,請讓我知道。 – GibboK