未定义不是这个和自我的函数使用



当执行以下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]];
                };
            };
        };
    };

试试这个:

  1. 在调用函数之前删除函数定义

  2. 对函数定义和调用都使用"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();
    };
    

最新更新