使用Knockout点击绑定处理程序和javascript绑定(ECMAScript 5)
Using Knockout click binding handler and javascript bind (ECMAScript 5)
我无法理解为什么下面的代码不能在Knockout中工作。
在javascript中,myFunction .bind(…)应该返回一个函数,包含对FUNCTION1的调用和提供的参数。我说的对吗?
理论上,下面的代码应该可以工作,传入的参数'hey'应该被this.path.to.method函数接收。
然而,它没有,我得到了类似ViewModel实例的东西,后面跟着事件对象。
为什么?
我想知道它到底做了什么,以了解我是否可以使用。bind或我是否总是被迫将它包装在函数(){/*这里的任何调用…*/}在knockout绑定'click'中。
JSFiddle链接:http://jsfiddle.net/darknessm0404/X2yd7/
<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。方法("嘿",美元数据);}"
但是,它比另一个可读性差。
我不明白的是。结合电话吗?
谢谢你的帮助。
正确的语法是
<a data-bind="click: path.to.method.bind($data, 'hey')">
演示参见knockout doc的示例。
实际上,bind
的第一个参数将作为函数中的this
值传递。
所以函数中的第一个参数是bind
中的第二个参数。
检查js文档:
语法乐趣。bind(thisArg[, arg1[, arg2[,…]]])
参数thisArg作为this参数传递给调用绑定函数时的目标函数。值为如果使用new操作符构造绑定函数,则忽略。
相关文章:
- 对象文字方法上的Javascript绑定不起作用
- 视窗 8/Metro UI 数据绑定 JavaScript
- 是否可以绑定javascript函数,使其本地上下文与“this”相同
- 绑定 JavaScript:内联或外部(或脚本)
- 在MVC 4.0中绑定javascript文件
- 如何使用Knockout绑定javascript对话框
- 如何使用angular js在html元素中绑定javascript和ng-click事件
- 如何使用asp.net C#在页面加载时绑定JavaScript事件
- 正在清除WinJS绑定JavaScript数组
- 绑定JavaScript课程未捕获语法错误:意外的令牌<
- 访问嵌套事件绑定javascript中的对象
- 元素在 ajax 显示时不能绑定 Javascript 事件
- 动态绑定javascript与GridView按钮
- 绑定JavaScript's oninput事件的最佳jQuery插件实现
- 实时数据绑定JavaScript
- 为什么我要取消绑定Javascript事件?
- Android绑定JavaScript代码到Android代码不工作
- 如何在ClojureScript中绑定Javascript承诺的解析值
- 绑定javascript滑动和onclick事件到iframe,其中有pdf文档
- 使用knockout.js来跨列绑定javascript关联数组