我的困境在于道场文档建议不要设置或读取全局变量的AMD模块。然而,假设您的数据模型包含许多单独的小部件使用的属性(因此是共享模型),那么期望每个小部件都持有自己的数据模型对象实例是不合理的。那么,您应该将其放在哪里,以便需要获取和设置属性或观察属性更改的所有小部件都可以这样做?
我的困境在于道场文档建议不要设置或读取全局变量的AMD模块。然而,假设您的数据模型包含许多单独的小部件使用的属性(因此是共享模型),那么期望每个小部件都持有自己的数据模型对象实例是不合理的。那么,您应该将其放在哪里,以便需要获取和设置属性或观察属性更改的所有小部件都可以这样做?
App
的AMD模块定义。一个“公共”属性data
可以包含任何表示您的共享数据的对象,因此您可以在分离的AMD模块中使用它们的小部件中使用它们。init
可用于初始化单个对象并填充属性data
(例如,向您的服务器API发出请求)。
bootstrap
AMD模块(它是您的应用程序的入口点)显示了如何首次加载app
AMD模块并初始化它,从那时起,每当您需要在小部件中获取“共享”数据时,您可以像这样请求app和data 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();
});