AngularJS TypeError:无法读取属性';插入前';空的
我似乎不知道我做错了什么。我试图从php文件中提取json数据,然后在Angular应用程序中显示它 My app.js:AngularJS TypeError:无法读取属性';插入前';空的,angularjs,Angularjs,我似乎不知道我做错了什么。我试图从php文件中提取json数据,然后在Angular应用程序中显示它 My app.js: var app = angular.module("MyApp", []); app.controller("ClientHealthCtrl", function($scope, $http) { $http.get('json.php'). success(function(data, status, headers, config) {
var app = angular.module("MyApp", []);
app.controller("ClientHealthCtrl", function($scope, $http) {
$http.get('json.php').
success(function(data, status, headers, config) {
$scope.rows = data;
}).
error(function(data, status, headers, config) {
// log error
});
});
<body class="skin-black" ng-app="MyApp">
...
<tbody ng-controller="ClientHealthCtrl">
<tr class="link_back" ng-repeat="Computer in rows">
<td><a href="#cid={{Computer.id}}">{{Computer.ComputerName}}</a></td>
<td><i class="fa fa-fw fa-check-square" style="color:#008000;"></i>{{Computer.WmiTest}}</td>
<td><i class="fa fa-fw fa-check-square" style="color:#008000;"></i>{{Computer.SmsClientService}}</td>
<td><i class="fa fa-fw fa-check-square" style="color:#008000;"></i>{{Computer.McAfeeFrameworkService}}</td>
<td><i class="fa fa-fw fa-check-square" style="color:#008000;"></i>{{Computer.RemoteManagement}}</td>
</tr>
</tbody>
我的HTML:
var app = angular.module("MyApp", []);
app.controller("ClientHealthCtrl", function($scope, $http) {
$http.get('json.php').
success(function(data, status, headers, config) {
$scope.rows = data;
}).
error(function(data, status, headers, config) {
// log error
});
});
<body class="skin-black" ng-app="MyApp">
...
<tbody ng-controller="ClientHealthCtrl">
<tr class="link_back" ng-repeat="Computer in rows">
<td><a href="#cid={{Computer.id}}">{{Computer.ComputerName}}</a></td>
<td><i class="fa fa-fw fa-check-square" style="color:#008000;"></i>{{Computer.WmiTest}}</td>
<td><i class="fa fa-fw fa-check-square" style="color:#008000;"></i>{{Computer.SmsClientService}}</td>
<td><i class="fa fa-fw fa-check-square" style="color:#008000;"></i>{{Computer.McAfeeFrameworkService}}</td>
<td><i class="fa fa-fw fa-check-square" style="color:#008000;"></i>{{Computer.RemoteManagement}}</td>
</tr>
</tbody>
...
{{Computer.WmiTest}
{{Computer.SmsClientService}
{{Computer.McAfeeFrameworkService}}
{{Computer.RemoteManagement}}
结果是…
TypeError: Cannot read property 'insertBefore' of null
at https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:2067:13
at forEach (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:113:18)
at forEach.after (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:2066:5)
at Object.JQLite.(anonymous function) [as after] (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:2104:17)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:13294:22
at https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:3745:29
at Object.<anonymous> (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:13293:13)
at Object.Scope.$digest (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:7693:38)
at Object.Scope.$apply (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:7894:24)
at done (https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:8883:20)
enter code here
TypeError:无法读取null的属性“insertBefore”
在https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:2067:13
在弗雷赫(https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:113:18)
每次之后(https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:2066:5)
在Object.JQLite.(匿名函数)[如下](https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:2104:17)
在https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:13294:22
在https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:3745:29
反对。(https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:13293:13)
位于Object.Scope.$digest(https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:7693:38)
在Object.Scope.$apply(https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:7894:24)
完成(https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:8883:20)
在这里输入代码
您的堆栈跟踪表明,当它试图执行for循环(“at forEach”、“at forEach.after”)时,出现了一些问题,因为它来自JQLite函数,所以我认为这是一个基于角度的循环
看一下您提供的代码,我猜这个循环就是您认为的ng repeat。这几乎肯定意味着你的“计算机”对象是空的
他的评论恰到好处。我会将一些console.log添加到成功处理程序中,以查看“数据”是什么。在错误处理程序中,您的日志记录似乎也有点精简。您确信http调用成功完成了吗?尝试将..
元素包装在..
中
查看Angular的源代码,它抱怨某些节点没有父节点
实际上,我是在试图修复代码中的相同错误时发现您的问题的。
这就是我所做的,并且它起了作用。您确定数据模式与您预期的一样吗?您是否已注销成功处理程序中“data”的值?添加console.log(JSON.stringify($scope.rows));成功处理程序将在控制台中正确显示json内容。因此,如果没有其他原因,我知道$scope.rows不是空的。我也有同样的错误,但发现它是由ng include指令引起的,所以请确保在代码中对此进行检查;成功处理程序将在控制台中正确显示json内容。因此,如果没有其他内容,我知道$scope.rows不是null。那么$scope.rows是否包含实际数据?或者它被包装在另一个“数据”属性中?非常确定它包含实际数据。没有任何包装。谢谢@Ivan Rave,我在ui视图div中为ng include添加了一个div,并且得到了相同的错误,根据您的建议,为ng include div添加了包装div,解决了问题