获取一个具有KnockoutJs提交绑定的对象

时间:2013-07-09 13:22:43

标签: javascript knockout.js

目标

获取一个具有KnockoutJS提交绑定的对象。

问题

当我提交某个表单时,我需要获取对象而不是元素。

Here, on jsFiddle,打开您的控制台,然后点击某个项目的add button。您将收到Products object,此处一切正常。但here, also in jsFiddle,当您点击add button时,您的回复将是元素而不是对象 - 我需要该对象。

代码之间的差异

添加时查看此功能:

self.add = function (item) {
    var i = self.products.indexOf(item);
    self.products()[i].isAdded(true);
};

但是,当绑定为submit时,item参数与click绑定返回的响应不同。

我的场景

在我的实际应用程序中,有两个ViewModels like this。我认为这会更简单,但不幸的是,事实并非如此。

有人有任何想法吗?

1 个答案:

答案 0 :(得分:2)

在提交时调用函数时,需要传入$data对象。否则它将自动传递表单对象。

例如:

  <!-- ko ifnot:isAdded -->
  <form data-bind="submit: function() { $parent.add($data); }">
  <button data-bind="ifnot:isAdded" class="btn btn-small action add">
      <i class="icon-plus">Add</i>
  </button>
  </form>
  <!-- /ko -->

以下是您的小提琴的工作更新:http://jsfiddle.net/G8zPT/4/