如何在指令主体中访问指令的隔离范围?我的 DOM 看起来像这样:
<div ng-app="app">
<directive>
<p>boolProperty: {{boolProperty|json}}</p>
</directive>
</div>
The boolProperty
在指令的内部分配link
功能:
angular.module("app", []).directive("directive", function() {
return {
scope: {},
link: function($scope) {
$scope.boolProperty = true;
}
};
});
问题是,孩子<p>
指令内部绑定到指令的parent范围,而不是指令的独立范围。我怎样才能克服这个问题?
单击此处获取 jsFiddle。 http://jsfiddle.net/akashivskyy/Y9g4q/
您的代码中有几个问题。
- 默认限制选项是
A
for 属性,所以无论如何你的指令都不会被编译,因为你将它用作元素。使用restrict: 'E'
使其发挥作用。
-
根据文档,嵌入元素的范围不是指令的子范围,而是同级范围。所以boolProperty
总是未定义或为空。因此,您必须提高范围级别并找到合适的兄弟姐妹。
<div ng-app="app">
<directive>
<p>boolProperty: {{$parent.$$childHead.boolProperty}}</p>
</directive>
</div>
并且需要在指令中使用嵌入:
angular.module("app", []).directive("directive", function() {
return {
restrict: 'E',
scope: {},
transclude: true,
template: '<div ng-transclude></div>',
link: function(scope) {
scope.boolProperty = true;
}
};
});
然而,这种方法是不可取的,如果您在指令之前添加一个新的控制器,那么稍后会中断,因为嵌入的范围将成为第二个同级,而不像以前的第一个。
<div ng-app="app">
<div ng-controller="OneCtrl"></div>
<directive>
<p>boolProperty: {{$parent.$$childHead.boolProperty || $parent.$$childHead.$$nextSibling.boolProperty}}</p>
</directive>
</div>
Here is the Working Demo http://jsfiddle.net/Y9g4q/4/. The approach I mentioned is not ideal so use at your own risk. The @CodeHater' s answer is the one you should go with. I just wanted to explain why it did not work for you.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)