基本上我希望能够访问我创建的指令的父作用域,但我也希望能够访问我放置在元素上的属性。
例如相关的js
app.directive('testDirective', function(){
return {
restrict:"E",
templateUrl:"directive.html",
scope:{
testAttribute: '='
}
};
});
app.controller('mainCtrl', function($scope){
$scope.name = 'henry'
}
的index.html
<div ng-controller="mainCtrl">
<test-directive test-attribute="Hello"></test-directive>
</div>
directive.html
{{testAttribute}}
{{name}}
输出是&#34;你好&#34;而不是&#34; Hello Henry&#34;
所以只是为了澄清,我希望能够做的就是访问属性和父范围。
答案 0 :(得分:1)
对于您要做的事情,不需要双向绑定。您正在尝试访问分配为属性的文本。你可以把你的指令写成: -
.directive('testDirective', function(){
return {
restrict:"E",
//scope:true, //apply if required
templateUrl:"directive.html",
link:function(scope, elm, attrs){
scope.testAttribute = attrs.testAttribute; //Get it from attributes
}
};
});
<强> Demo 强>
现在,指令设置的scope属性将使用父作用域本身。但您可能希望使用scope:true
(父级的子范围)或2 way binding
智能孤立范围的理想方案。但是在这一点上,由于不确定你的最初目标是什么,这是一个基于你的问题所依据的解决方案。
总结一下: -
我希望能够访问我创建的指令的父范围
删除隔离范围,只使用父范围。
但我也希望能够访问我放置在元素上的属性。
使用链接函数attrs
的{{1}}参数。如果要将其评估为绑定值,请执行do(attrs.testAttribute
)