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
因为 $scope
值 resultListTitle
最后设置为 '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-init
在 ng-include
之前重新评估。这肯定是一个黑客,所以使用风险自负。
我像这样创建了一个内联模板
<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
因为 $scope
值 resultListTitle
最后设置为 '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-init
在 ng-include
之前重新评估。这肯定是一个黑客,所以使用风险自负。