【发布时间】:2017-01-26 08:19:10
【问题描述】:
我是 AngularJS 世界的新手。我这里有个情况。
<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body ng-app="myApp">
<table ng-controller="myCtrl" border="1">
<tr class="x" ng-repeat="x in records">
<td>{{x.Name}}</td>
<td>{{x.Country}}</td>
</tr>
</table>
<script>
var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope) {
$scope.records = [
{
"Name" : "Alfreds Futterkiste",
"Country" : "Germany"
},
{
"Name" : "Berglunds snabbköp",
"Country" : "Sweden"
},
{
"Name" : "Centro comercial Moctezuma",
"Country" : "Mexico"
},
{
"Name" : "Ernst Handel",
"Country" : "Austria"
}
];
var arrays = document.getElementsByClassName("x");
console.log(arrays.length);
});
</script>
我试图获取我通过 angularJS 加载的 html 元素数组(使用 ng-repeat)。当我记录整个数组的值时,它的结果是正确的。但是,当我记录 array.length 或 array[1] 时,结果分别为 0 和未定义。我尝试将这些代码放入 $scope.on('viewContentLoaded') 以确保所有 html 元素都完成加载,但结果是相同的。那么我在这里的愚蠢是什么?
谢谢。
**** 解决方案:
$timeout(function(){
var arrays = document.getElementsByClassName("x");
console.log(arrays.length);
});
感谢@Vladimir M
【问题讨论】:
-
你为什么不直接通过角度获取数组:$scope.records? $scope.records.length?
-
我只是想获取 html 元素来操作它们; array.length 不是我的目的;我只是用它来测试。 :)
标签: javascript angularjs javascript-objects