我正在使用KnockoutJS和Typescript编写单页应用程序.
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.单击此按钮时,函数的“email”参数是Mainviewmodel中正确选择的电子邮件,但函数的范围也是Emailviewmodel,而不是定义函数的Mainviewmodel.
我理解为什么会发生这种情况,我对如何解决Typescript中的特定问题感兴趣,因为我不能像在纯javascript中那样声明指向Mainviewmodel实例的指针:
var Mainviewmodel = (function(){ var self = this; this.addToCase = function(email) { self.addToCaseVM.setEmail(email,self.getEmailBody()); }; })();