我的shell.html中有一个div元素,它使用compose绑定来加载视图和视图模型:
<div data-bind="compose: { model: 'viewmodels/subMenu' }"></div>
我的shell.js看起来像:
import common = require("helpers/common");
class Shell {
view: any; router: DurandalRootRouter;
activate: () => Q.Promise<any>;
constructor() {
var self = this;
self.view = common.view;
self.router = common.router;
common.router.map([ { route: '', title: 'Home', moduleId: 'viewmodels/Home', nav: true } ]);
self.activate = () => { return Q.when(common.router.activate()); }
}
}
export = Shell
我的subMenu.js视图模型如下所示:
define([], function () {
"use strict";
return {
isPreview: ko.observable(false)
};
});
然后我有另一个视图模型,它使用requirejs导入这个subMenu视图模型并更改'isPreview'属性值。但是当它导入子菜单视图模型时,它会创建一个新实例而不是访问现有实例。基于durandal docs:http://durandaljs.com/documentation/Creating-A-Module.html
在上面的示例中,两个模块都返回了一个对象实例。这会产生通常被称为“单例”对象的东西,因为所有需要它的人都可以获得相同的对象实例。
我理解因为它返回一个对象因此应该是同一个实例而不是瞬态?