2014-11-05 49 views
0

下面是一個使用knockout.js顯示分組表

viewModel.myArray = ko.observableArray([ 
     { name: 'Luk', city: 'Warsaw' }, 
     { name: 'Mark', city: 'London' }, 
     { name: 'Tom', city: 'London' }, 
     { name: 'Peter', city: 'Warsaw' }, 
     { name: 'Paul', city: 'Warsaw' } 
    ]); 

使用<!-- ko foreach: myArray -->我可以考慮

顯示陣列但我怎麼能由城市這樣的分組如下準備陣表我的視圖模型使用淘汰賽

CITY  NAME 

[Warsaw] [Luk, Peter, Paul] 

[London] [Mark, Paul] 

感謝您的任何答案。

回答

0

你可以嘗試這樣的事情(未測試):

viewModel.groupedCities = ko.computed({ 
    read: function() { 
     var output = {}; 
     var arr = viewModel.myArray(); 
     for(var i = 0; i < arr.length; i++) { 
      var item = arr[i]; 
      output[item.city] = output[item.city] || []; 
      output[item.city].push(item.name); 
     } 

     var keys = Object.keys(output); 
     var result = []; 
     for(var i = 0; i < keys.length; i++) { 
      result.push({ city: keys[i], names: output[keys[i]]}); 
     } 

     return result; 
}); 

,不只是一個類似<!-- ko foreach: groupedCities -->顯示它們。

+0

感謝幫助。但我必須輸出[item.city()]不輸出[item.city] – Zabaa 2014-11-05 21:40:11

+0

當然可以。我這樣做是因爲在你的例子中,屬性不是可觀察的。 – 2014-11-05 22:03:39