Javascript 获取具有KnockoutJs提交绑定的对象 目标

Javascript 获取具有KnockoutJs提交绑定的对象 目标,javascript,knockout.js,Javascript,Knockout.js,获取具有KnockoutJS提交绑定的对象 问题 提交表单时,我需要获取对象而不是元素 ,打开控制台,然后单击某个项目的添加按钮。您将收到产品对象,这里一切正常。但是,当您单击添加按钮时,您的响应将是元素而不是对象,我需要对象 代码之间的差异 当我添加以下内容时,请注意此函数: self.add = function (item) { var i = self.products.indexOf(item); self.products()[i].isAdded(true); };

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

问题 提交表单时,我需要获取对象而不是元素

,打开控制台,然后单击某个项目的
添加按钮
。您将收到
产品对象
,这里一切正常。但是,当您单击添加按钮时,您的响应将是元素而不是对象,我需要对象

代码之间的差异 当我添加以下内容时,请注意此函数:

self.add = function (item) {
    var i = self.products.indexOf(item);
    self.products()[i].isAdded(true);
};
但是,当绑定为
submit
时,
参数与
单击
绑定返回的响应不同

我的情景 在我的实际应用程序中,有两个ViewModels。我原以为会更简单,但不幸的是,事实并非如此


有人知道吗?

在submit上调用函数时,需要传入
$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 -->

添加

下面是对您的小提琴的一个有效更新:

如果
add
函数是一个对象的方法,该怎么办?例如,
Summary.add($data)
?我必须这样做:
$parent.Summary.add($data)
,因为如果是,就不起作用了。您在JSFIDLE中使用的
add
函数是一个对象的方法,可以起作用。可以尝试
$root.Summary.add($data)。这将在视图模型的基础上工作。你可能看错了背景。(这里有一个$parent.Summary.add($data):@GuilhermeOderdenge为什么不发布一个JSFIDLE,其中包含不起作用的代码?更新了主帖子dhsto。如果可能的话,看一看。谢谢你的帮助!你的问题比原来的问题多。这是一把小提琴。。。做一个区分,看看区别:--最大的问题是要知道knockout中变量的上下文。另外,查看对
self.add
self.remove
功能的更改。你会发现这要简单得多。