AngularJS TypeError:无法读取属性' insertBefore'为null

时间:2014-09-29 15:13:11

标签: angularjs

我似乎无法解决我在这里做错的事情。我试图从php文件中提取json数据,然后在我的Angular应用程序中显示它。

我的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
    });
});

我的HTML:

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

导致......

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

2 个答案:

答案 0 :(得分:6)

尝试将<tr>...</tr>元素包装在<div>...</div>

查看Angular的源代码,它抱怨一些节点没有父节点。

实际上,在我的代码中修复相同的错误时,我发现了你的问题。 这就是我所做的,而且它有效。

答案 1 :(得分:1)

你的堆栈跟踪表明在尝试执行for循环(“at forEach”,“atEach.after”)时会出现问题,并且由于它来自JQLite函数,我会说这是一个基于Angular的循环

查看您提供的代码,我会猜测有问题的循环是您视图中的ng-repeat。这几乎可以肯定意味着您的“计算机”对象为空。

badsyntax与他的评论一致。我会在成功处理程序中添加一些console.log来查看“数据”是什么。您的日志记录在错误处理程序中似乎也有点精简。您是否确信http呼叫正在成功完成?