我有一个简单的字符串集合,我想使用 Knockout 的 foreach 绑定(bind)为其创建按钮。该按钮使用单击绑定(bind)在我的对象中加载一些数据。绑定(bind)正确发生,但实际加载函数失败,告诉我不支持某个方法。
这是我所拥有的:
//My Object
function MyObject()
{
this.WorkerFunction = function(id)
{
//Do Work
}
this.Load = function(id)
{
//Call Another Function
this.WorkerFunction(id); //Error: Object doesn't support property or method 'WokerFunction'
}
}
//Creation
var myObject = new MyObject();
//VM Binding
var vm = ko.mapping.fromJS(jQueryAjaxObject);
ko.applyBindings(vm);
//HTML
<div data-bind="foreach: stringIDCollection">
<button data-bind="click: function() { myObject.Load($data) }"> Load </button>
</div>
<小时/>
单击按钮时,出现以下错误:对象不支持属性或方法“WokerFunction”
。我的代码中其他地方的鼠标移动事件也出现了类似的错误,但我能够使用如下所示的绑定(bind)函数解决该问题。但是,我无法使其适用于 Knockout 绑定(bind)。
$("myElement").mousemove(this.MouseMove.bind(this));
<小时/>
编辑
我也尝试过 var self = this;
和 self.WorkerFunction(id);
,但得到了相同的结果;不支持该方法。
问:在保持 this 范围的同时,处理对对象函数的 Knockout Click 绑定(bind)的正确方法是什么?
<小时/>最佳答案
这可能是由于您绑定(bind)事件处理程序的方式所致。有多种方法可以做到这一点,每种方法都有其细微差别,请参阅此处的官方文档:http://knockoutjs.com/documentation/click-binding.html和这里的上下文: https://dzone.com/articles/knockout-click-binding-and
关于javascript - Knockout - 单击绑定(bind)到对象功能 - 范围问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20016866/