我对Knockout.js很陌生,现在面临的情况是我不确定如何处理它。问题是:我收到了一堆我通过ajax检索的对象。其结果将是有点像这样:如何使用knockout.js管理和呈现嵌套数组?
var Objects = [ { id: 0, name: "Foo", type: "A" },
{ id: 1, name: "Bar", type: "B" },
{ id: 1, name: "Bar", type: "A" }, ... ];
我到目前为止已经完成(简体):
var ViewModel = function() {
var self = this;
self.objects = ko.observableArray(Objects);
};
现在我需要使这些对象在不同的列表取决于它们的“类型”。所以有一个“A”类型的对象列表和一个类型为“B”类型的对象列表(目前有五种类型,但未来可能会添加更多)。
我想出这个(工作)解决方案:
var ViewModel = function() {
var self = this;
self.objects = ko.observableArray(Objects);
self.objectsA = ko.computed(function() {
return ko.utils.arrayFilter(self.objects(), function(item) {
return (item.type == 'A');
});
});
self.objectsB = ...
self.objectsC = ...
};
在我实际的观点:
<h1>Type A</h1>
<ul class="typeA" data-bind="template: { name: 'object', foreach: objectsA }"></ul>
<h1>Type B</h1>
<ul class="typeB" data-bind="template: { name: 'object', foreach: objectsB }"></ul>
有没有更好的办法来解决这个问题呢?这有效,但它有点难看,并不真正动态,并且包含很多重复。
谢谢,这使得更清晰。我要去这个! – Niko 2012-03-17 18:46:21