我對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