我有一个条件ng-include
指令与ng-controller
关联,但似乎控制器在条件为真时不运行。
目标是仅在满足条件时包含模板,并避免使用TypeError: Cannot call method 'insertBefore' of null
issue。
例如:
<div ng-include src="myContent.imgList ? 'ui/image-list.html' : null" ng-controller="ImgListSubCtrl">
</div>
当myContent.imgList
填充数据时,我希望将image-list.html
模板附加到DOM并运行ImgListSubCtrl
,但它不是。
这是预期的行为吗?我使用Ionic Framework和Angular 1.2.17。
谢谢。
答案 0 :(得分:2)
我已经找到了解释,但欢迎进一步的评论。
以下Codepen显示了上述行为和解决方案(在Ionic Framework 1.0.0-beta12中):http://codepen.io/anon/pen/FnojD?editors=101
第一个包括不显示任何计数,但第二个显示正确。
似乎在使用ng-include
和ng-controller
时,控制器只运行一次,即使ng-include src
表达式的计算结果为null
。
要在实际包含模板时运行它(当ng-include src
不是null
时),解决方案是避免条件ng-include
并将其包装在ng-if
中阻止,所以整个元素是动态重新创建的,如上面的Codepen所示
在问题的例子中:
<div ng-if="myContent.imgList">
<div ng-include src="'ui/image-list.html'" ng-controller="ImgListSubCtrl">
</div>
</div>
我希望它有所帮助。