Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS TypeError:无法读取属性';插入前';空的_Angularjs - Fatal编程技术网

AngularJS TypeError:无法读取属性';插入前';空的

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) {

我似乎不知道我做错了什么。我试图从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) {
            $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,解决了问题