微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

knockout.js – 传递给KO点击绑定的Typescript成员方法以“错误”范围结束

我正在使用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>&nbsp;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());
    };
})();

解决方法

您可以使用函数文字,以便可以将父对象传递给addToCase函数,但这似乎解决了问题而不是解决问题.
data-bind="click: function(data) {$root.addToCase(data,$root)}"

原文地址:https://www.jb51.cc/js/151282.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐