ng-include 与 ng-init 奇怪

ng-include with ng-init oddity

我像这样创建了一个内联模板

<script type="text/ng-template" id="/deviceResultsContainer.html">
    {{resultListTitle}}
</script>

如果我这样使用它

<div ng-include="'/deviceResultsContainer.html'" ng-init="resultListTitle = 'Errors'"></div>
<div ng-include="'/deviceResultsContainer.html'" ng-init="resultListTitle = 'Warnings'"></div>

我的输出是

Warnings

Warnings

为什么会这样列出,而不是我所期望的:

Errors

Warnings

因为 $scoperesultListTitle 最后设置为 'Warnings'。他们在技术上都在寻找相同的价值。

我想你在找什么你可能想要一个带有 isolated $scope.

的指令

如果您要执行以下操作:

<div ng-include="'/deviceResultsContainer.html'" ng-init="resultListTitle = 'Errors'"></div>
<div ng-include="'/deviceResultsContainer.html'"></div>

你会看到这个:

Errors

Errors

似乎如果您添加 ng-if="true" 或真实陈述的某些变体,它会将评估顺序更改为 ng-initng-include 之前重新评估。这肯定是一个黑客,所以使用风险自负。