knockout选择viewmodel取决于属性

时间:2014-03-10 14:31:25

标签: knockout.js

我有类似的东西:

HTML

<div data-bind="??? with?" id="MainItem">
  <input type="text" id="MainQuantity" value="12" data-bind="text: Quantity"> шт
  <input type="button" value="Buy" data-bind="click: CartAdd" data-good-id="2134" />
</div>

脚本:

var MainViewModel = function () {
  var self = this;
  var items = [ { Id:2134, Quantity: 12 }, .. ]; // this data from json

  self.CartAdd = function (data, event) {
    var id = $(event.target).attr("data-good-id");
    $.grep(self.items, function (i) { return i.id == id }).
      each(function (i) { i.Quantity++; })
  }
}

因此,我需要为我的#MainItem元素设置ViewModel,ViewModel应该来自于项目数组,由id选择,放在“data-good-id”属性中。

我的最终结果应该是,Quantity属性绑定到#MainQuantity元素

谢谢。

1 个答案:

答案 0 :(得分:0)

我认为您不想使用带有绑定的。相反,您可以对项目执行foreach循环,然后访问父上下文中的 CartAdd 功能。例如:

<div data-bind="foreach: items">
    <input type="text" id="MainQuantity" value="12" data-bind="text: Quantity">
    <input type="button" value="Buy" data-bind="click: $parent.CartAdd" data-good-id="2134" />
</div>

请原谅任何错字,但我正在打电话。希望它有所帮助。