2016-04-07 16 views
0

Amacım, nesneden (tablo satırları olarak) bir dizi oluşturmaktır, ancak $ rootScope: infdig hatasını alıyorum. Ben benzer bir soru here gördük ama yardımcı olmadı

$scope.rows = { 
"TableName": "TestTable", 
"Rows": [{ 
    "Name": "Name1", 
    "RowCells": [{ 
     "Y": 2001, 
     "M": 164 
    }, { 
     "Y": 2002, 
     "M": 178 
    }, { 
     "Y": 2003, 
     "M": 188 
    }, { 
     "Y": 2007, 
     "M": 295 
    }, { 
     "Y": 2008, 
     "M": 316 
    }, { 
     "Y": 2009, 
     "M": 328 
    }] 
}], 
"Rows": [{ 
    "Name": "Name2", 
    "RowCells": [{ 
     "Y": 2001, 
     "M": 164 
    }, { 
     "Y": 2002, 
     "M": 178 
    }, { 
     "Y": 2003, 
     "M": 188 
    }, { 
     "Y": 2007, 
     "M": 295 
    }, { 
     "Y": 2008, 
     "M": 316 
    }, { 
     "Y": 2009, 
     "M": 328 
    }] 
}], 
"Rows": [{ 
    "Name": "Name3", 
    "RowCells": [{ 
     "Y": 2001, 
     "M": 164 
    }, { 
     "Y": 2002, 
     "M": 178 
    }, { 
     "Y": 2003, 
     "M": 188 
    }, { 
     "Y": 2007, 
     "M": 295 
    }, { 
     "Y": 2008, 
     "M": 316 
    }, { 
     "Y": 2009, 
     "M": 328 
    }] 
}] 
} 

$scope.rowCells = function() { 
       var tableRowCollection = []; 

       angular.forEach($scope.rows, function (item) { 
        var tableRow = []; 
        tableRow.push(item.Name); 
        angular.forEach(item.RowCells, function (i) { 
         tableRow.push(i.M); 
        }); 
        tableRowCollection.push(tableRow); 
       }); 
       return tableRowCollection ; 
      }; 

<div data-ng-repeat="r in rowCells()">{{r}}</div> 

:

İşte benim kodudur. neyim ya da nereye yanlış gidiyorum?

cevap

0

Kişisel satırlar dizisi böyle olmalı:

$scope.rows = { 
"TableName": "TestTable", 
"Rows": [{ 
    "Name": "Name1", 
    "RowCells": [{ 
     "Y": 2001, 
     "M": 164 
    }, { 
     "Y": 2002, 
     "M": 178 
    }, { 
     "Y": 2003, 
     "M": 188 
    }, { 
     "Y": 2007, 
     "M": 295 
    }, { 
     "Y": 2008, 
     "M": 316 
    }, { 
     "Y": 2009, 
     "M": 328 
    }] 
}, { 
    "Name": "Name2", 
    "RowCells": [{ 
     "Y": 2001, 
     "M": 164 
    }, { 
     "Y": 2002, 
     "M": 178 
    }, { 
     "Y": 2003, 
     "M": 188 
    }, { 
     "Y": 2007, 
     "M": 295 
    }, { 
     "Y": 2008, 
     "M": 316 
    }, { 
     "Y": 2009, 
     "M": 328 
    }] 
}, { 
    "Name": "Name3", 
    "RowCells": [{ 
     "Y": 2001, 
     "M": 164 
    }, { 
     "Y": 2002, 
     "M": 178 
    }, { 
     "Y": 2003, 
     "M": 188 
    }, { 
     "Y": 2007, 
     "M": 295 
    }, { 
     "Y": 2008, 
     "M": 316 
    }, { 
     "Y": 2009, 
     "M": 328 
    }] 
}] 
} 
+0

, benim nesnede bir hata oluştu ama bu örnek oluştururken ederken, gerçek nesne ok kaymış okunur. – agri

0

Staskus önerdi olarak, dizinizi değiştirmek zorunda. Sizin foreach döngü aşağıdaki gibi olmalıdır:

haklısınız
angular.forEach($scope.rows.Rows, function(item) { 
    var tableRow = []; 
    tableRow.push(item.Name); 
    angular.forEach(item.RowCells, function(i) { 
     tableRow.push(i.M); 
    }); 
    tableRowCollection.push(tableRow); 
}); 
+0

Evet, bu örnekte $ scope.rows $ scope.rows.Rows olmalıydı. Çalıştığım asıl nesne ajax ile api'den geliyor ve $ scope.rows = response.data.Rows olarak ayarlandı. Hata alıyorum: [$ rootScope: infdig] – agri

+0

$ rootScope: Modelin görünüm verilerine göre güncellendiği ve verileri görüntülemenin model güncellemelerini tetiklediği sonsuz bir döngü varsa infdig hatası gelir. Sağladığınız HTML sadece kısmi içerir. Tam html sağlayabilirseniz, tanımlaması kolay olacaktır. Sonsuz hata için lütfen bu bağlantıyı kontrol edin: https: //docs.angularjs.org/error/$rootScope/infdig – Sree

+0

Evet, bu bağlantıyı gördüm ve sorunlara neden olan

{{r}}
bölümünün olduğunu anladım. Farklı bir yaklaşım benimsedim. – agri

İlgili konular