2017-02-14 32 views
0

我將我的項目數組索引的使用對象underscorejs渲染集合:角度智能表失敗基於對象名單

$scope.items = _.indexBy($scope.items, 'id'); 

現在我的項目是這樣的:

$scope.items = { 
    "1": { 
     id: 1, 
     name: "Tizio" 
    }, 
    "2": { 
     id: 2, 
     name: "Caio" 
    }, 
    "3": { 
     id: 3, 
     name: "Sempronio" 
    }, 
    }; 

它正是我所需要的。

現在我需要在一個表中顯示我的項目,並且我想使用一個插件來幫助我對數據進行排序,分頁,輕鬆過濾,所以我開始使用angular-smart-table。一位著名的和常見的一種...

我跟着文檔和最終的HTML看起來像這樣:

<table st-safe-src="items" st-table="rowItems"> 
    <tr> 
    <th>id</th> 
    <th>name</th> 
    </tr> 
    <tr ng:repeat="item in rowItems track by item.id"> 
    <td>{{item.id}}</td> 
    <td>{{item.name}}</td> 
    </tr> 
</table> 

遺憾的是它不顯示我的數據。我試圖刪除智能表,它在普通表中工作正常。

我該如何讓它工作?我做錯了什麼?如果智能表不支持對象列表,您是否知道更適合我需求的更好的插件?

Here a JsFiddle about it

感謝

回答

0

我不知道你試圖用[].concat(OBJECT)做的,所以我改變了使用Object.keysmap從對象轉換爲數組的方式。

您可以檢查更新的jsfiddle: https://jsfiddle.net/qfpyu1kL/2/

// Initial values converted to array 
    $scope.rowItems = Object.keys($scope.items).map(function(key) { 
    return $scope.items[key]; 
    }); 

    $timeout(function() { 
    // Add new values 
    $scope.rowItems.push({ id: 4, name: 'OTHER1' }); 
    $scope.rowItems.push({ id: 5, name: 'OTHER2' }); 
    }, 1000); 

我已經看到您正在使用stSafeSrc,這意味着你期待的異步數據,這就是爲什麼我添加了$超時。

我也更新了HTML,設置rowItemsst-safe-src屬性和st-tabledisplayedCollection

+0

好吧,基本上你已將索引列表轉換爲Array ...足夠合理。感謝您的回答和解決方案 –

+0

再次您好,經過審查更好的代碼後,我發現幾秒鐘後它會生成一個無限的摘要循環。特別是因爲我將'rowItems'添加到'st-safe-src' ... –

+0

更新了jsfiddle,只需重命名'st-table'屬性並在'ng-repeat'中使用這個新名稱。 – Canastro