点击功能参数Knockout

时间:2015-04-14 20:22:16

标签: javascript jquery knockout.js

我试图通过敲除点击绑定将一个参数传递给一个函数。如果我尝试发送它没有绑定,它的工作原理。

这是没有绑定的工作代码的小提琴:

https://jsfiddle.net/Obviously/ev0Lcx7q/4/

但如果我尝试这样绑定,它就不起作用了:

<input class="sometextbox">
 <button type="button" data-bind="click: $root.someFunction.bind($root,$(this).siblings('input').val())"> Search! 
</button>

我在$(this)得到错误,JavaScript运行时错误:对象不支持属性或方法'siblings'

2 个答案:

答案 0 :(得分:1)

你的代码并没有真正正确地使用淘汰赛。使用它来添加点击事件时(如你的小提琴示例所示),常规的内联事件定义工作正常,但忽略了敲除将该文本框绑定到程序中的某个变量的能力,这似乎就是让事情倒退。 更像这样的是我认为淘汰赛的用途:

<script>
ko.applyBindings(model);
function myModel(){
   this.myInput = ko.observable('some default value');
}
function myClick(){
   alert(model.myInput());
}
</script>

<input class="textbox" data-bind="value: myTextArea">
<button data-bind="click: myClick">Go</button>

答案 1 :(得分:1)

$element使您可以访问Knockout绑定中的当前元素。

<input class="sometextbox">
<button type="button" data-bind="click: $root.someFunction.bind($root, $($element).siblings('input').val())"> Search! </button>

请注意,在Knockout绑定中使用jquery不是常用方法。