我正在尝试使用KnockoutJS和Typescript但遇到问题是在我的点击绑定this
中为clickMe
(类Test)获取正确的上下文。
我提出了两种方法,第一种方法是使用Test
在我的Test.prototype.LoadNextWinner
课程中调用一个函数...
module Swagolicious {
export class Test {
constructor() {
this.WireUp();
}
private WireUp() {
var instance = new this.ViewModel();
ko.applyBindings(instance);
}
private ViewModel = function() {
var vm = this;
vm.clickMe = () => {
//This is one way to call function LoadNextWinner
Test.prototype.LoadNextWinner(vm);
};
}
private LoadNextWinner(vm) {
console.log("clicked");
console.log(vm);
}
}
}
$(() => {
var test = new Swagolicious.Test();
});
或者第二种方式是我可以将当前上下文this
作为参数发送到视图模型中。例如var instance = new this.ViewModel(this);
module Swagolicious {
export class Test {
constructor() {
this.WireUp();
}
private WireUp() {
//or I can send this into the ViewModel
var instance = new this.ViewModel(this);
ko.applyBindings(instance);
}
private ViewModel = function(instance) {
var vm = this;
vm.clickMe = () => {
//This is another way to call function LoadNextWinner
instance.LoadNextWinner(vm);
};
}
private LoadNextWinner(vm) {
console.log("clicked");
console.log(vm);
}
}
}
$(() => {
var test = new Swagolicious.Test();
});
然而,这两种方式对我来说似乎有点脏,第一种方式是直接用protoype调用函数,第二种方式(YUK)我将this
作为上下文发送到视图模型中。
我的按钮很简单: -
<button data-bind="click : clickMe">Click me</button>
我已经尝试了获取TEST
的类上下文的所有不同方法,但到目前为止还没有这样做。我还有其他选择吗?