外部访问Knockout JS ViewModel函数

时间:2015-02-06 11:00:37

标签: javascript knockout.js knockout-mapping-plugin

我有一个KnockoutJS视图模型,它具有我需要访问的功能。最初填充ViewModel并调用ko.applyBindings。一切正常。

问题在于尝试从ViewModel外部调用viewModel.RefreshData()函数(即从其他JavaScript代码调用)。

Mozilla报告TypeError: viewModel.RefreshData不是一个功能。我认为问题可能与Knockout Mapping插件有关,并且覆盖了#39;功能。

代码如下:

var EditorViewModel = function (data) {

    var _self = this;

    _self.Data = ko.observable('');        

    _self.LoadData = function () {
        _self.Data(new ChildViewModel(data));
    };

    _self.RefreshData = function (_data) {
        _self.Data(new ChildViewModel(_data));
    };

    _self.LoadData(data);

    return _self;

};

var ChildViewModel = function (data) {

    var self = this;
    ko.mapping.fromJS(data, {}, self);        
};


// On first load with modelData from AJAX:
var viewModel = new EditorViewModel(modelData);
ko.applyBindings(viewModel);

// When refreshing with newModelData from AJAX call:
viewModel.RefreshData(newModelData); // ERROR IS THROWN HERE!

请注意,使用ChildViewModel是为了刷新数据/视图。

0 个答案:

没有答案