条件ng-与AngularJS中的ng-controller一起包含

时间:2014-09-24 00:11:29

标签: angularjs ionic-framework

我有一个条件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。

谢谢。

1 个答案:

答案 0 :(得分:2)

我已经找到了解释,但欢迎进一步的评论。

以下Codepen显示了上述行为和解决方案(在Ionic Framework 1.0.0-beta12中):http://codepen.io/anon/pen/FnojD?editors=101
第一个包括不显示任何计数,但第二个显示正确。

似乎在使用ng-includeng-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>

我希望它有所帮助。