我有一个简单的复选框。它从视图模型中获取自己的value
属性。点击后,我需要将该值发送回函数。我该怎么做?
我试过这个,但价值不起作用
<input class="cards-view--item-checkbox pull-right" type="checkbox"
data-bind="value: universalParcelId, click: $root.addUniversalParcelIDtoArray(value)" />
答案 0 :(得分:2)
click
绑定的参数是它将为该事件运行的函数。它不是表达。如果您正在使用http://codepen.io/jamesg1/pen/ALAZKg,则可以使用on.click
绑定来提供表达式。另外,要获取元素的属性,请使用$element
。
以下是您提供功能的方式:
click: function(data, event) { $root.handleClick($element.value, data, event) }
答案 1 :(得分:1)
点击绑定knockout documentation中详细介绍了这一点。这有多种方法可以处理。无论何时使用click绑定,都会将数据从上下文传递给&#34;这个&#34;在功能中。所以,如果&#34;重视&#34;那么,你很可能根本不需要传递任何东西。是当前上下文中模型的属性。 (见文件中的注释1)
var rootModel = function(){
var self = this;
self.addUniversalParcelIDtoArray = function() {
console.log(this.value);
}
}
但是,您可能需要在当前上下文中传递除数据之外的其他内容。在这种情况下,您可以使用将添加其他参数的.bind函数。 $ data仍然将模型从当前上下文传递给&#34;这个&#34;除了$ parent上下文中的value属性。 (见文件中的注释2)
<input class="cards-view--item-checkbox pull-right" type="checkbox"
data-bind="value: universalParcelId, click: $root.addUniversalParcelIDtoArray.bind($data, $parent.value)" />
答案 2 :(得分:0)
感谢您的回答。我必须做一些不同的事情才能通过$ data和$ event对象以及自定义参数来获取值。我使用event.target.value
我最终使用了:
click: function(data, event) { $root.addUniversalParcelIDtoArray(data, event, 'param1', 'param2') }
这是addUniversalParcelIDtoArray函数:
addUniversalParcelIDtoArray: function (data, event, 'param1', 'param2') {
var self = monsoon.Search;
self.universalParcelIDArray.push(event.target.value);
return true; // allow the default "click" action, which is checking the box with a "check"
},