首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Knockout单击绑定处理程序和javascript bind (ECMAScript 5)

使用Knockout单击绑定处理程序和javascript bind (ECMAScript 5)
EN

Stack Overflow用户
提问于 2014-07-03 14:49:38
回答 1查看 73关注 0票数 0

我很难理解为什么下面的代码不能在Knockout中工作。

示例

在javascript中,.bind(...)应该返回一个函数,其中包含对带有所提供参数的FUNCTION1的调用。我说的对吗?

从理论上讲,下面的代码应该工作,传递的参数'hey‘应该由this.path.to.method函数接收。

但是,它没有,我得到的是类似于ViewModel实例的东西,后面跟着event对象。

为什么?

我想知道它到底做了什么,以了解我是否可以使用.bind,还是总是被迫将它封装在函数(){ /*这里的任何调用. */ }中的敲除绑定'click‘中。

JSFiddle链接:http://jsfiddle.net/darknessm0404/X2yd7/

代码语言:javascript
复制
<a data-bind="click: path.to.method.bind('hey', $data)">
    Why p1 and p2 do not receive the good parameters with arguments like ['hey', $data] when click happens?
</a>

function VM(){
    // In my model, I am namespacing things this way:
    this.path = {
        to: {
            method: function(p1, p2) {
                console.log(((p1 === 'hey')?'First parameter is as expected':'First parameter is NOT as expected'));
                debugger;
            }
        }
    }
}
ko.applyBindings(new VM());

JSFiddle链接:http://jsfiddle.net/darknessm0404/X2yd7/

是的起作用了..。

...with data-bind="click: function(){ path.to.method(‘path.to.method’,$data);}"

然而,它的可读性不如另一个。

我对.bind调用有什么不理解的?

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-03 15:17:07

正确的语法是

代码语言:javascript
复制
<a data-bind="click: path.to.method.bind($data, 'hey')">

演示

击倒医生的例子

实际上,bind的第一个参数将作为函数中的this值传递。

因此,函数中的第一个参数是bind. 中的第二个参数

检查js医生

语法 fun.bind(thisArg[,arg1[,arg2,.]) 参数 在调用绑定函数时,将作为此参数传递给目标函数的值thisArg。如果使用新运算符构造绑定函数,则忽略该值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24556943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档