所以我收到控制台错误Cannot set property 'stepModels' of undefined
但是打字稿编译得很好。我在这做错了什么?我似乎无法弄明白。非常感谢任何帮助。
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 :(得分:1)
ko.applyBindings的第一个参数应该是表示Knockout视图模型的对象。由于Knockout对typescript类没有任何了解,因此在将类发送到ko.applyBindings之前,必须先将类实例化为目标对象。
理论上,如果你不想实例化它,你可以自己发送类,但是你必须将类的属性定义为静态字段,这样它们才能直接在对象上结束虽然我不认为这样做有任何意义。