我正在尝试使用list.js库创建一个列表对象,并将其添加到angular.js根作用域中,以便在嵌套作用域中使用它。只要我不向列表元素添加控制器,这就可以正常工作。
如果我这样做,我在javascript控制台中收到以下错误。
“无法读取未定义的属性'childNodes'”
如果在使用ng-init调用的init()函数内初始化列表,则会发生相同的情况。
以下是html和js文件
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/list.js/1.1.1/list.min.js"></script>
<script type="text/javascript" src="listBug.js"></script>
</head>
<body ng-controller="MainController" ng-app="theApp">
<div id="theList">
<ul class="list">
<li>
<div ng-controller="divController">
<span class="id"></span>
</div>
</li>
</ul>
</div>
</body>
</html>
listBug.js
var app = angular.module('theApp', [])
mainController=function($scope){
var opts={valueNames: ['id'] }
$scope.theList=new List('theList', opts);
}
app.controller("MainController", mainController)
divController=function($scope){
}
app.controller("divController", divController)
答案 0 :(得分:2)
问题是,在调用代码时,DOM未完全加载。您可以通过执行以下操作来延迟它
mainController=function($scope){
angular.element(document).ready(function () {
var opts={valueNames: ['id'] }
$scope.theList=new List('theList', opts);
});
}