点击函数参数 Knockout

On click function parameters Knockout

我正在尝试通过敲除点击绑定将一个参数传递给一个函数。如果我尝试在不绑定的情况下发送它,它就会起作用。

这里是fiddle没有绑定的工作代码:

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'

您的代码并未真正正确使用 knockout。当(如您的 fiddle 示例所示)常规内联事件定义工作正常时,使用它添加点击事件,但忽略敲除将该文本框绑定到程序中的某个变量的能力似乎您正在获得事情倒退。 更像这样的是我认为淘汰赛的用途:

<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>

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

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

请注意,在 Knockout 绑定中使用 jquery 并不是一种常见的方法。