Knockout.js 获取typescript中绑定knockoutjs的正确上下文
我试图使用KnockoutJS和Typescript,但在我的click bindingKnockout.js 获取typescript中绑定knockoutjs的正确上下文,knockout.js,typescript,Knockout.js,Typescript,我试图使用KnockoutJS和Typescript,但在我的click bindingclickMe中遇到了一个问题,即为this(类测试)获取正确的上下文 我想出了两种方法,第一种方法是使用Test.prototype.LoadNextWinner调用Test类上的函数 module Swagolicious { export class Test { constructor() { this.WireUp();
clickMe
中遇到了一个问题,即为this
(类测试)获取正确的上下文
我想出了两种方法,第一种方法是使用Test.prototype.LoadNextWinner
调用Test
类上的函数
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
作为参数发送到视图模型中。e、 g.var instance=newthis.ViewModel(this)代码>
然而,这两种方法对我来说都有点脏,第一种方法是直接使用prototype调用函数,第二种方法(YUK)是将this
作为上下文发送到视图模型中
我的按钮很简单:-
<button data-bind="click : clickMe">Click me</button>
点击我
我尝试了所有不同的方法来获取TEST
的类上下文,但到目前为止都失败了。我还有什么其他选项?问题是您正在将knockout绑定到ViewModel的实例,但是clickMe回调需要访问测试类的实例。这就是您需要提供实例以便可以在闭包中访问它的原因。为什么要使用嵌套的ViewModel类,而不是将clickMe直接放在测试类上(仍然使用Arrow函数,“this”类型脚本上下文将是测试类的实例)并应用程序绑定测试实例?原因很简单,就是click函数正在做很多事情,并与其他操作共享功能。保持干燥是我的主要原因。关于方法,你更喜欢哪种方法?
<button data-bind="click : clickMe">Click me</button>