淘汰赛:如何在点击时将数据绑定输入值传回功能?

时间:2016-08-31 23:31:32

标签: javascript events knockout.js data-binding click

我有一个简单的复选框。它从视图模型中获取自己的value属性。点击后,我需要将该值发送回函数。我该怎么做?

我试过这个,但价值不起作用

<input class="cards-view--item-checkbox pull-right" type="checkbox" 
data-bind="value: universalParcelId, click: $root.addUniversalParcelIDtoArray(value)" />

3 个答案:

答案 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"
},