当执行以下ViewModel函数时,会引发错误Uncatch TypeError:self.deleteInvisibleColumns不是一个函数 - 为什么会这样?
function ViewModel(vm) {
var self = this;
this.rows = ko.observableArray(vm.Rows);
self.deleteInvisibleColumns();
this.deleteInvisibleColumns = function () {
for (var i = 0; i < vm.Rows.length; i++) {
var row = vm.Rows[i];
var keys = Object.keys(row);
for (var k = 0; k < keys.length; k++) {
if (vm.VisibleColumns.indexOf(keys[k]) === (-1)) {
delete row[keys[k]];
};
};
};
};
试试这个:
-
在调用函数之前删除函数定义
-
对函数定义和调用都使用"self"
function ViewModel(vm) { var self = this; this.rows = ko.observableArray(vm.Rows); self.deleteInvisibleColumns = function () { for (var i = 0; i < vm.Rows.length; i++) { var row = vm.Rows[i]; var keys = Object.keys(row); for (var k = 0; k < keys.length; k++) { if (vm.VisibleColumns.indexOf(keys[k]) === (-1)) { delete row[keys[k]]; }; }; }; }; self.deleteInvisibleColumns(); };