2014-09-01 81 views
0

我對如何處理Knockout.js中的實時搜索過濾功能有所瞭解。但是我有新的複雜的要求,即最終的輸出將看起來像下面...實時搜索過濾器嵌套級別的淘汰賽js

enter image description here

當用戶點擊列出來的搜索結果,他可能有另一組兒童名單裏面應該有「N '鑽井的次數!

我試着用簡單的實時搜索過濾功能。我失去了一些東西。我不知道如何從Json加載多級數據,以及如何在knockout JS中進行綁定。

任何想法?

+0

http://jsfiddle.net/tyrsius/67kgm/ - 這是我開始的URL。但是我不知道如何在我的問題中插入插圖時加載嵌套級別的數據。 – Vasethvan 2014-09-01 14:45:43

+0

也許[這](http://stackoverflow.com/questions/25564936/knockoutjs-recurring-array/25565664#25565664)遞歸將幫助 – 2014-09-01 14:46:16

+0

嵌套在[KO文檔](http:// knockoutjs .COM /文檔/不顯眼的事件,handling.html#活例子嵌套子女)。至於JSON,請使用[映射插件](http://knockoutjs.com/documentation/plugins-mapping.html) – Tyblitz 2015-01-17 14:19:33

回答

0

我偶然發現了類似的問題。瞭解Knockout如何檢測哪個可觀察值會影響計算值是很重要的。我注意到,在所有示例中,observables都是在計算函數作用域中調用的。雖然如果我在過濾函數(子範圍)上調用它,計算未更新。我在計算函數的開始嘗試調用它們,以便過濾函數可以通過同一範圍內的變量訪問值。這似乎工作,每次可觀察的變化 - 計算更新。

這裏我修改了你的計算器,它過濾所有的字段。

self.filteredRecords = ko.computed(function() { 
    var idSearch = self.idSearch(), 
     nameSearch = self.nameSearch().toLowerCase(), 
     townSearch = self.townSearch(); 
    return ko.utils.arrayFilter(self.records(), function (r) { 
     return r.id.toString().indexOf(idSearch) !== -1 && 
      r.name.toLowerCase().indexOf(nameSearch) !== -1 && 
      (r.homeTown === townSearch || townSearch === ""); 
    }); 
}); 

http://jsfiddle.net/67kgm/127/