我是来自AngularJS世界的knockoutjs新手。 我正在尝试使用AMD模式来帮助我使用Require.js组织我的JavaScript。
我有一个" Model.js"我在多个视图中加载需要 我想在模型之外设置属性并订阅更改。
以下是我的模型示例:
define(['knockout', 'komapping'], function (ko, komapping) {
var self = this;
self.model = komapping.fromJS({});
init = function () {
$.getJSON("some api call", function (data) {
komapping.fromJS(data, self.model);
});
};
self.obsModel.someProperty.subscribe(function (newValue) {
console.log('new property value',newValue);
});
init();
ko.applyBindings(self.model);
return self;
});
答案 0 :(得分:0)
如果我有多个模型需要访问权限的属性,我创建另一个JS模块。例如,我可能会把它放在config.js中(爱你J.Papa)。
define('config',['jquery','ko'], function ($, ko) {
var
prop1 = ko.observable(),
prop2 = ko.observable();
return {
prop1: prop1,
prop2: prop2
};
});
然后在我的模型中我会
define('myModel',['ko','config'], function (ko, config) {
var
somePropToBindTo = ko.observable(),
init = function () {
config.prop1.subscribe(function (newValue) {
console.log('new property value',newValue);
});
};
init();
return {
somePropToBindTo: somePropToBindTo
};
});