0

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

1 に答える 1

2

問題は、コードが呼び出されているときに DOM が完全に読み込まれていないことです。次の方法で遅延させることができます

mainController=function($scope){
    angular.element(document).ready(function () {
        var opts={valueNames: ['id'] } 
        $scope.theList=new List('theList', opts);
    });
}
于 2015-04-30T15:20:45.420 に答える