javascript - Knockout - 单击绑定(bind)到对象功能 - 范围问题

标签 javascript jquery knockout.js

我有一个简单的字符串集合,我想使用 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/

相关文章:

javascript - Knockout 映射初始化的最佳代码

javascript - Backbone.js:单击 U.I 列表元素以将它们显示在页面的不同部分

javascript - 多次更改 onclick() 函数(背景图像更改)

javascript - jquery从php脚本预加载图像然后显示

jquery - 每 X 分钟使用 AJAX 为多个用户同时更新内容

html - 从 html5 websocket 在 vi​​ewModel knockoutjs 中设置数据

javascript - 尽管返回了其他数据,但未设置 Ajax 成功变量

javascript - 悬停效果在 ajax 加载的内容上工作很奇怪

jQuery 添加可排序/可拖动到同位素砌体

javascript - knockout : Can't edit item that was added to UI