在AngularJS中,是否可以从包含的部分内部继承父控制器的范围,而不是通过注入的服务传递数据?
示例案例:
让我们说ParentCtrl
的范围如下:{ testData: 'testing stuff' }
<div ng-controller="ParentCtrl">
Here we're defined: {{testData}}
<div ng-include="'partial.html'"></div>
</div>
在partial.html
内:
<em>Inherited: {{testData}}</em>
因此,部分人甚至不需要它自己的控制器。如果这是不可能的,你只能通过服务在控制器之间传递注入的数据,为什么Angular会这样做?
答案 0 :(得分:5)
是的,这实际上是默认情况下的工作原理。 ng-include
始终会创建一个新范围,并且:
A&#34;儿童范围&#34; (原型)从其父级继承属性 范围。
Here就是一个例子。
修改另外,我刚刚发现原始问题中存在语法问题。模板应该用单引号括起来。将<div ng-include="partial.html"></div>
更改为<div ng-include="'partial.html'"></div>
答案 1 :(得分:0)
在ngInclude documentation中使用示例Plunkr,我可以从局部内部访问父控制器的范围。例如,将template1.html
的内容更改为:
Content of template1.html {{ template }}
根据文档,ngInclude
创建了一个新的范围,这意味着您需要观察角度最佳实践,并在您的范围内设置一个点&#34; (访问范围上的对象而不是原始值),以避免损坏引用的问题。您可以查看this Stack Overflow question以获取更多信息。