2014-09-29 97 views
2

我似乎無法將我在這裏做錯的事情包圍在我的腦海裏。我試圖從php文件中提取json數據,然後將其顯示在我的Angular應用程序中。AngularJS TypeError:無法讀取屬性'insertBefore'null

我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 
+0

您是否確定數據模式與您期望的相同?你是否已經在成功處理程序中註銷了「數據」的值? – badsyntax 2014-09-29 15:15:46

+0

添加console.log(JSON.stringify($ scope.rows));成功處理程序在控制檯中正確顯示json內容。所以如果沒有別的我知道$ scope.rows不是null。 – 2014-09-29 15:46:30

+0

我有同樣的錯誤,但發現它是由ng-include指令引起的,所以請確保在代碼中檢查該錯誤。 – AlexandruC 2014-10-23 15:06:29

回答

1

你的籌碼跟蹤表明當它試圖執行一個for循環(「at forEach」,「forEach.after」)時出現了問題,並且由於它來自JQLite函數,所以我認爲它是基於Angular的循環。看看你提供的代碼,我會猜測你所看到的循環是ng-repeat。這幾乎肯定意味着您的「計算機」對象爲空。

badsyntax與他的評論是現貨。我會添加一些console.logs到成功處理程序來查看「數據」是什麼。您的日誌記錄在錯誤處理程序中似乎也很輕微。你有信心http呼叫成功完成嗎?

+0

添加console.log(JSON.stringify($ scope.rows));成功處理程序在控制檯中正確顯示json內容。所以如果沒有別的我知道$ scope.rows不是null。 – 2014-09-29 15:46:08

+0

$ scope.rows是否包含實際數據?還是它包裹在另一個「數據」屬性? – 2014-09-29 16:02:58

+0

很確定它包含實際的數據。不要用任何東西包裝它。 – 2014-09-30 14:22:59

5

嘗試在<div>...</div>內包裝<tr>...</tr>元素。

看着Angular的源代碼,它抱怨一些節點沒有父節點。

其實,當我在修改代碼中的相同錯誤時發現了你的問題。 這就是我所做的,它的工作。

+2

thx,與ui-view中的ng-include相同的錯誤 – 2015-04-18 22:18:57

+0

感謝@Ivan Rave,我在ui-view div中有ng-include的div,並且得到了同樣的錯誤,按照你的建議爲ng-包括股利,它解決了這個問題 – 2016-11-19 08:21:25

相關問題