2016-03-29 56 views
1

所以我得到控制檯錯誤Cannot set property 'stepModels' of undefined,但typescript編譯罰款。我在這裏做錯了什麼?我似乎無法弄清楚。任何幫助深表感謝。'應用綁定時無法設置未定義的屬性'錯誤

class ViewModel { 

    public index: number; 
    public percentage: number; 
    public getTemplate: any; 
    public goNext: any; 
    public goPrevious: any; 
    public stepModels: KnockoutObservable<Array<Step>>; 
    public currentStep: KnockoutObservable<Step>; 
    public currentIndex: KnockoutComputed<number>; 
    public currentPercentage: KnockoutComputed<number>; 
    public canGoNext: KnockoutComputed<boolean>; 
    public canGoPrevious: KnockoutComputed<boolean>; 

    constructor() { 
     let self = this; 

     self.stepModels = ko.observableArray([ 
      new Step(1, 'emailTmpl'), 
      new Step(2, 'usernameTmpl'), 
      new Step(3, 'passwordTmpl'), 
      new Step(4, 'questionsMainTmpl'), 
      new Step(5, 'questionsTmpl'), 
      new Step(6, 'questionsFinalTmpl'), 
      new Step(7, 'verifyTmpl'), 
      new Step(8, 'successTmpl') 
     ]); 
    } 
} 

然後:

ko.applyBindings(ViewModel, element); 
+0

看來你並沒有初始化'stepModels'屬性。 –

+0

你如何實例化這個視圖模型? – Alex

+0

@Alex'ko.applyBindings(ViewModel,element);' –

回答

1

到ko.applyBindings的第一個參數應該是一個表示淘汰賽視圖模型的對象。由於Knockout沒有關於打字稿類的任何知識,因此在將其發送到ko.applyBindings之前,必須將您的類實例化爲預期的對象。

如果你不想實例化它,理論上你可以發送這個類本身,但是你必須定義類的屬性作爲靜態字段,以便它們直接結束於傳遞的對象上儘管我認爲這樣做沒有任何意義。

相關問題