我在使用自定义角度指令时遇到问题。基本上,在下面的示例中,如果变量“名称”超出指令范围,则不能正确呈现,但如果不在指令范围内,则将正确呈现。
模板:
<div ng-controller="swygController">
<div swyg="example" edit="load(id)">
{{name}}
</div>
{{name}
</div>
指示:
swyg.directive('swyg', function(){
return {
restrict: 'A',
scope: {
edit: '&'
},
compile: function(elm, attr){
// Code
},
controller: function($scope, $element, $attrs) {
// Code
}
};
});
我已经在compile和controller指令函数为空的情况下进行了测试(以排除导致问题的指令中的某些问题),并获得相同的结果。
我相当确定这是一个范围问题,但无法弄清楚如何解决它。似乎我需要以某种方式允许指令继承控制器的作用域?我假设由于指令位于控制器内部,所以很好。
还有其他人碰到这个吗?
谢谢你的帮助!
scope: { }
创建一个隔离的作用域,这意味着您无法访问父作用域及其上定义的所有内容。
您可以使用$ parent.name来访问父作用域名称变量。但是我不建议使用$ parent遍历作用域。
而是将名称作为属性传递给您的指令。
我创建了一个插件来演示如何执行此操作:http ://plnkr.co/edit/NGNMfkgNMooq0Sul6HPH?p=preview
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句