2013-04-07 60 views
0

那麼問題是什麼。我想從具有特定參數的WinJS列表視圖中排除項目(ID - 從JSON傳遞)。怎麼做?WinJs列表視圖顯示:沒有ID的瓦片

事情我已經嘗試:

一)將數據推送到someView.itemDataSource過程中它具有這種功能(它的工作的,但看上去很髒)前。

fldView.itemDataSource = this._processItemData(Data.items.dataSource); 
    .... 
    _processItemData: function (data) { 
     for (var i = data.list.length; i >= 1; i--) { 
      if (data.list._groupedItems[i]) { 
       if (data.list._groupedItems[i].groupKey == 'Folders') 
        continue; 
       else { 
        if (data.list._groupedItems[i].data.folderID) { 
         data.list.splice(i - 1, 1); 
        } 
       } 
      } 
     } 
     return data; 
    } 

B)有兩個條件模板的傳統方式(不工作):

fldView.itemTemplate = this.getItemTemplate; 
    .... 
    getItemTemplate: function(promise){ 
       return promise.then(function(item){ 
        var 
         itemTemplate = null, 
         parent = document.createElement("div"); 

        if(item.data.folderID){ 
         itemTemplate = document.querySelector('.hideItemTemplate') 
        }else{ 
         itemTemplate = document.querySelector('.itemTemplate') 
        } 
        //console.log(item.data.folderID); 
        itemTemplate.winControl.render(item.data, parent); 
        return parent; 
       }) 
      } 

2 HTML模板

<div class="itemTemplate" data-win-control="WinJS.Binding.Template"> 
     <div class="item"> 
      <img class="item-image" src="#" data-win-bind="src: backgroundImage; alt: title" /> 
      <div class="item-overlay"> 
       <h4 class="item-title" data-win-bind="textContent: title" style="margin-left: 0px;"></h4> 
       <h6 class="item-subtitle win-type-ellipsis" data-win-bind="textContent: subtitle" style="margin-left: 0px; margin-right: 4.67px;"></h6> 
      </div> 
     </div> 
    </div> 
    <div class="hideItemTemplate" data-win-control="WinJS.Binding.Template"> 
     <div class="display-none"></div> 
    </div> 

和CSS顯示:無

.hideItemTemplate, .display-none{ 
    display:none; 
} 

提前致謝!

回答

1

建議要麼使用array.filter建設WinJS.Binding.List之前過濾的項目或做列表上的過濾器投射它建成後。如果需要分組,則可以在篩選的列表上完成分組。

var list; // assuming this is all data items 
var filteredList = list.createFiltered(function filter(item) 
    { 
     if (item.FolderID) 
      return false; 
     else 
      return true; 
    }); 
var groups = filteredList.createGrouped(...); 
+0

我明天早上檢查一下,並給出反饋。謝謝! – karlisup 2013-04-08 08:38:41

+0

真棒,工作! – karlisup 2013-04-10 16:21:16