我的两难处境是,在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