【发布时间】:2013-01-09 22:49:13
【问题描述】:
有人可以帮助解释我可能犯的根本错误。 我需要能够有一个模型,它可以对一组对象进行分组,每个对象都有自己的一组绑定。
一个小提琴展示了我如何处理一个只有 1 个块的示例,但最后我想要多个块。
HTML
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"
type="text/javascript"></script>
<div class="productblock">
<div class="product">
<input class="binding" data-bind="value: amount" type="text" value="1">
</div>
<div class="product">
<input class="binding" data-bind="value: amount" type="text" value="2">
</div>
<input class="discount" data-bind="value: discount" value="50">
</div>
</div>
<span id="res" data-bind="text: result">result here </span>
js
function ResultViewModel() {
this.result = ko.computed(function () {
return 1;
});
}
function ProductViewModel(val) {
this.amount = ko.observable(val+1);
this.sum = function () {
return this.amount();
};
}
var products = [];
function ProductBlockViewModel(block) {
$.each($(block).find("div.product"), function (index, element) {
var product = new ProductViewModel($(element).find("input").val());
products.push(product);
ko.applyBindings(product);
});
this.discount = ko.observable(22);
}
var productBlocks = [];
$.each($("div.productblock"), function (index, element) {
console.log("a");
var productBlock = new ProductBlockViewModel(element);
productBlocks.push(productBlock);
ko.applyBindings(productBlock, element);
console.log("asdf");
});
ko.applyBindings(new ResultViewModel()); http://jsfiddle.net/Todilo/DGUKu/2/
【问题讨论】:
-
如果你检查浏览器控制台,你会看到有一个错误阻止你的代码被执行。我仍然不明白你想要达到什么目的。我相信还有另一种方法可以让代码更简单,不推荐重叠 applyBindings
-
我需要能够映射 A 产品块 1 产品 2 产品 B 产品块 1 产品 2 产品其他一些东西,但我找不到任何使用现有数据的示例
-
基本上它的嵌套我无法弄清楚。
标签: knockout.js