AngularJS:NG-如果加上NG-包括引发TypeError:无法调用空的方法“的insert

2019-10-20 20:50发布

我正在写使用应用离子框架 (版本V1.0.0-beta.11),但我相信这个问题是与底层AngularJS(版本v1.2.17),而相关的。

我使用时有问题ng-ifng-include在同一个元件。 当条件的ng-if模型中的更改,我得到以下错误(在Chrome和Android两种测试):

TypeError: Cannot call method 'insertBefore' of null
    at http://localhost:8100/lib/ionic/js/ionic.bundle.js:10843:14
    at forEach (http://localhost:8100/lib/ionic/js/ionic.bundle.js:8187:18)
    at forEach.after (http://localhost:8100/lib/ionic/js/ionic.bundle.js:10842:5)
    at Object.JQLite.(anonymous function) [as after] (http://localhost:8100/lib/ionic/js/ionic.bundle.js:10913:17)
    at Object.enter (http://localhost:8100/lib/ionic/js/ionic.bundle.js:12015:17)
    at Object.enter (http://localhost:8100/lib/ionic/js/ionic.bundle.js:30107:21)
    at http://localhost:8100/lib/ionic/js/ionic.bundle.js:27441:26
    at publicLinkFn (http://localhost:8100/lib/ionic/js/ionic.bundle.js:13779:29)
    at boundTranscludeFn (http://localhost:8100/lib/ionic/js/ionic.bundle.js:13894:21)
    at controllersBoundTransclude (http://localhost:8100/lib/ionic/js/ionic.bundle.js:14492:18) 


我隔离在基于离子启动项目(一个简单的项目问题ionic start [PATH] tabs )。 下面的代码: http://plnkr.co/edit/CczR5NgFLqR143jQJ08C?p=preview

我挖成的错误和发现,是引发错误的功能after: function(element, newElement) {...
打印出参数传递的功能, element是一个[object Comment]与内容<!-- ngInclude: -->newElement[[object HTMLDivElement]]

我读到这里 ,这两个指令ng-ifng-include可自角1.2.2结合。

有没有人遇到此问题? 是否有任何已知的定位点(不是移动其他ng-if到父元素)+。

提前致谢,
拉法。

Answer 1:

这两种ng-ifng-include正在排队来执行,和ng-if有更高的优先权,因此首先运行。 如果表达式为假,则ng-if删除的元素,但不取消该ng-include从运行。 由于该元素被删除, ng-include无法注入加载的内容为元素,你会得到这个错误。

你可以考虑具有以表达ng-include和删除ng-if 。 如果表达式返回一个空字符串, ng-include不会尝试加载任何东西。

分叉的plunkr,并有2秒后的内容加载: http://plnkr.co/edit/oTnJ0bTlMBD7yrUmPloq?p=preview

标记

<ng-include src="source"></ng-include>

调节器

// In the controller, check
$timeout(function () {
  $scope.source = 'templates/Nocontent.html';
}, 2000);


文章来源: AngularJS: ng-if plus ng-include throws TypeError: Cannot call method 'insertBefore' of null