1

目标

使用 KnockoutJS 的提交绑定获取对象。

问题

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

在这里,在 jsFiddle 上,打开您的控制台,然后单击add button某个项目。您将收到Products object并且这里一切正常。但是在这里,同样在 jsFiddle 中,当您单击时,add button您的响应将是元素而不是对象——我需要对象。

代码之间的区别

添加时请查看此功能:

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

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

我的场景

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

有人知道吗?

4

1 回答 1

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/

于 2013-07-09T13:32:01.120 回答