我正在使用 KnockoutJS 和 Typescript 编写单页应用程序。
问题是这样的,我有一个 MainViewModel 方法:
public addToCase(email) {
this.addToCaseVM.setEmail(email, this.getEmailBody());
};
我的页面中有一个电子邮件视图,其中有一个绑定在 html 中的“添加到案例”按钮,如下所示:
<a class="btn btn-info" data-bind="click: $root.addToCase" data-toggle="modal" href="#addToCaseModal"><i class="icon-plus-sign"></i> Add To Existing Case</a>
$root 是我的 MainViewModel。单击此按钮时,函数的“电子邮件”参数是 MainViewModel 中正确选择的电子邮件,但函数的范围也是 EmailViewModel,而不是定义函数的 MainViewModel。
我理解为什么会发生这种情况,我对如何解决 Typescript 中的特定问题很感兴趣,因为我无法像在纯 JavaScript 中那样声明指向 MainViewModel 实例的指针:
var MainViewModel = (function(){
var self = this;
this.addToCase = function(email) {
self.addToCaseVM.setEmail(email, self.getEmailBody());
};
})();