我有一个淘汰的foreach部分,我试图获取每个部分的click事件绑定的函数内生成的控件的值。对于生成的每个部分,当我单击按钮时,我想知道它的评论是什么。
// HTML
<div data-bind="foreach: areas">
<button data-bind="click: $parent.saveComment()" />
<input type="text" data-bind="text: comment" />
</div>
// KnockoutJS函数
saveComment: function(){
console.log([value of the comment textbox]);
}
答案 0 :(得分:1)
HTML:
<div data-bind="foreach: areas">
<button data-bind="click: $parent.saveComment($data)" />
<input type="text" data-bind="text: comment" />
</div>
使用Javascript:
saveComment: function(area){
console.log(rea);
}
请参阅: What is the origin and purpose of the variable $data in KnockoutJS?
答案 1 :(得分:1)
通常,对于<input>
,您希望使用value
绑定。您可以传递$data
,但这不是必需的,因为该值将自动为您传递。
<div data-bind="foreach: areas">
<button data-bind="click: $parent.saveComment">Save</button>
<input type="text" data-bind="value: comment"></input>
<br/>
</div>
不要在()
绑定中包含任何saveComment
,并在模型中使用参数声明该函数。该函数将接收代表$data
等效值的值。
saveComment: function (data) {
console.log(data.comment());
}
或者,如果您愿意,可以在this
内使用saveComment
来引用&#34;当前&#34;上下文。
saveComment: function () {
console.log(this.comment());
}
查看包含这两种用法的my example fiddle。