如何在knockoutjs foreach中获取控件的值

时间:2014-05-30 21:04:24

标签: javascript knockout.js foreach

我有一个淘汰的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]);
}

2 个答案:

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