2015-07-23 2 views
0

У меня есть следующий код:Ошибка при использовании KnockoutObservableArray в машинописном

class IndexViewModel { 
    projects: KnockoutObservableArray<Project>; 

    constructor() { 
     this.projects = ko.observableArray<Project>([]); 
    } 

    filteredList: KnockoutComputed<Project[]> = ko.computed(() => { 
     var elements = ko.utils.arrayFilter(this.projects(), (item: Project) => { 
      //do something 
     }); 
     //return something 
     }) 
    } 

Но когда я загрузить страницу, я получаю сообщение об ошибке JavaScript, который говорит, TypeError: _this.projects is not a function index-ViewModel_test.js

Визуализированное JavaScript для той части is,

this.filteredList = ko.computed(function() { 
      var elements = ko.utils.arrayFilter(_this.projects(), function (item) { 
       //return something 
      }); 
      //return something 
     }) 

Что мне здесь не хватает?

ответ

1

Проблема была в том, что член projects еще не определился, когда был вычислен filteredList. Перемещение вычислений в конструкторе класса решило мою проблему. Код:

constructor() { 
     this.projects = ko.observableArray<Project>([]); 
     this.filteredList = ko.computed(() => { 
      var elements = ko.utils.arrayFilter(this.projects(), (item: Project) => { 
       //return something 
      }); 
      //return something 
     }); 
    } 
Смежные вопросы