无法理解与DOM节点

时间:2015-05-23 14:39:50

标签: angularjs angularjs-scope

将任何控制器附加到DOM节点时,例如,

<div ng-controller="myController">{{testProperty}}</div>

控制器范围将与此DOM节点相关联。 想象一下另一个例子。我们创建了指令myDirective,它有自己独立的范围。现在我们有了

<div ng-controller="myController" myDirective>{{testProperty}}</div>

在这种情况下,哪个范围与DOM节点相关联?控制器或指令的范围?最后一个例子,我们还有一个指令mySecondDirective,它有自己的隔离 范围

<div myDirective mySecondDirective>{{testProperty}}</div>

在这种情况下,哪个范围与DOM节点相关联? myDirective或mySecondDirective的范围?你能解释一下原因吗?

2 个答案:

答案 0 :(得分:0)

  

<div myDirective mySecondDirective>{{testProperty}}</div>

multiple directives defined on a single DOM element,您可以明确定义priority: - 请参阅:https://docs.angularjs.org/api/ng/service/$compile#directive-definition-object

  

<div ng-controller="myController" myDirective>{{testProperty}}</div>   在这种情况下,哪个范围将与DOM节点相关联?范围   控制器或指令?

for controller's $scope and a directive's scope defined on a single DOM element
&#34; transclude选项更改了范围嵌套的方式。它使得transcluded指令的内容具有指令之外的任何范围,而不是内部的任何范围。这样做,它使内容访问外部范围。&#34;来自这里找到的angularjs文档:https://docs.angularjs.org/guide/directive#creating-a-directive-that-wraps-other-elements

答案 1 :(得分:-1)

谢谢,但你们所有人都错了。我发现无法在一个DOM节点上创建两个或多个作用域。 Angular抛出了这个错误:

Error: [$compile:multidir] Multiple directives [pTest2, pTest] asking for new/isolated scope on: <p-test p-test2="">