我有一个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是为了刷新数据/视图。