2016-11-21 70 views
1

在我的index.html文件中,我們使用兩個ng-repeat文件從data.json中獲取數據。數組對象中的ng-repeat數組對象

在這種方法中,每個數據都會創建重複的DOM。

如何在我的index.html中使用單個ng-repeat而不是double ng-repeat。

<div ng-repeat="x in userdata"> 
     <item data="y" ng-repeat="y in x.content"></item> 
    </div> 

https://plnkr.co/edit/uGRmYSv90kbjFzx9qmkI?p=preview

+0

您希望輸出的結果如何? – jos

+0

我想獲得單個ng-repeat中的每個對象,但是我的代碼獲得每個結果使用一個ng-repeat – CodeMan

+0

@jos:我想要使用單個ng-repeat來獲得相同的結果 – CodeMan

回答

1

可使用嵌套角爲每個在JS,所以U可以使用最終範圍

Database.getDatabase().success(function(data){ 
     $scope.userdata=data.document; 
     $scope.sample = []; 
    angular.forEach($scope.userdata, function(content) { 
    angular.forEach(content.content, function(content) { 
     $scope.sample.push(content); 
    }) 
    }) 

}).error(function(){ 
}); 

現在U可以循環用樣品使用單納克重複如

<div ng-repeat="x in sample"> 
    {{x.content}} 
    </div> 

updated with foreach

+0

我只有兩個「內容「數組對象avilable在」文檔「,所以我需要只重複兩次。每個ng-repeat我需要獲得所有的細節liks」內容「和」名稱「 – CodeMan

+0

x.name將給你的名字試試吧... –

0

而不是做$scope.userdata = data.document你可以做的:

$scope.userdata = data.document.reduce(function(a, b) { 
    return a.concat(b.content); 
}, []); 

這將會把所有的content同一陣列英寸並用它你究竟是如何在你的plunker

<item data="x" ng-repeat="x in userdata"></item> 

這裏評論對您plnkr

+0

比我的瘦 –

0

更新創建地圖的內容,並作爲另一個對象添加到文件

var createMap = function(list) { 
    var map = {}; 
    for(var i =0;i <list.length ; i++) { 
    map[list[i].name] = list[i].content; 
    } 
    return map; 
}; 
    Database.getDatabase().success(function(data){ 
     for(var i =0;i <data.document.length ; i++) { 
     data.document[i]['userdata'] = createMap(data.document[i].content); 
     } 
     $scope.userdata=data.document; 
     console.log($scope.userdata); 
}).error(function(){ 
}); 

plnkr here