我们最近升级到了Angular 1.2.1,并且遇到了ng-include的一些问题。升级到Angular 1.2.1后的范围层次结构问题
这里有一个简单的例子,显示我们的角度1.1.1用法:
http://jsfiddle.net/Dq57j/1/
这里与角1.2.1其他摆弄的解决方法,我们的问题:
http://jsfiddle.net/78FJJ/4/
- HTML剪断below--
<div ng-controller="RootCtrl" id="a">
Hello, {{name}}!
<!-- does not work in Angular 1.2.1 -->
<!--div ng-controller="TemplateCtrl" id="b"
ng-include src="'template.html'">
</div-->
<!-- workaround -->
<div ng-controller="TemplateCtrl" id="b">
<div ng-include src="'template.html'">
</div>
</div>
如果注释掉日解决方法并运行原始代码,此示例将无法按预期工作,即输出“模板说:”。看起来好像该模板无法读取由TemplateCtrl初始化的范围。
如果进一步调查该问题的jsfiddle之外并密切观察所产生的范围(例如,使用Batarang),你会看到,会产生以下的范围层次结构(其中范围的名称反映了相应的div的id):
一个
| _ç
| _ b
对我来说,这似乎是很奇怪的。角怎么扭曲范围层次根据我应该是a-> b-> c?请注意,此示例在v.1.1.1中的工作原因是,该版本的Angular中的层次结构为a-> b-> c。
任何人都可以解释这一点,究竟是在两个版本之间发生了什么变化?