Angularjs using forEach



我正试图在我的angularjs项目中通过web服务迭代数据。我遇到的问题是:

在我的控制台日志中,它显示了每个项目的信息,但一旦我试图在我的html上显示它,它只显示所有数据的最后一项?

<ion-item ng-repeat="item in documents">{{item}}</ion-item>

如果我像这样在item中添加id

<ion-item ng-repeat="item in documents">{{item.id}}</ion-item>

只显示与数据相同数量的空格。我认为数据在那里,但没有显示任何字符串值。

JS

.controller('DashCtrl', function($scope, $http) {
    $http.get("http://localhost:15021/Service1.svc/getAllTrucks")
            .success(function(data) {
                var obj = data;
                var ar = [];
                angular.forEach(obj, function(index, element) {
                    angular.forEach(index, function(indexN, elementN) {
                        ar = {id: indexN.QuoteID, quotenum: indexN.QuoteNumber};
                        console.log(ar);
                    });
                    $scope.documents = ar;
                });
                console.log(data);
            })
            .error(function(data) {
                console.log("failure");
            });

我想要完成的是用数据列表填充应用程序。谢谢你!

您实际上并没有将每条记录添加到数组中,您只是将迭代项分配给数组。因此,您只能看到最后的记录。您可以添加.push()来将每个迭代记录添加到数组的末尾。

 var ar = [];
 angular.forEach(obj, function(index, element) {
     angular.forEach(index, function(indexN, elementN) {
         ar.push({id: indexN.QuoteID, quotenum: indexN.QuoteNumber});
     });
 });
 $scope.documents = ar;

此外,您应该在嵌套迭代的末尾分配ar

你可以试试:

.success(function(data) {
    var obj = data;
    $scope.documents  = [];
    angular.forEach(obj, function(index, element) {
        angular.forEach(index, function(indexN, elementN) {
            $scope.documents.push( {id: indexN.QuoteID, quotenum: indexN.QuoteNumber});
            console.log($scope.documents);
        });
    });
    console.log(data);
})

最新更新