Knockout JS Model AND模式,具有任何属性的订阅选项

时间:2014-05-28 17:06:59

标签: knockout.js requirejs amd

我是来自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;
});

1 个答案:

答案 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
    };
});