我正在尝试在隔离范围中设置变量,但我无法访问我在隔离范围内的链接函数中设置的变量,而且可以访问控制器的变量。
app.directive('myDir', function($timeout) {
return {
restrict: 'A',
scope: {
'propVar': '='
},
link: function(scope, elem) {
console.log(elem)
scope.linkVar = 'It works!'
console.log(scope);
},
}
})
我创建了plunker以显示我的意思:http://plnkr.co/edit/lUBvIkF4fKXkEgujJpuU?p=preview
答案 0 :(得分:3)
它可以正常运作。
1)如果定义'propVar' : '='
,则表示您的指令元素具有属性prop-var
。不是这种情况。如果您想使用prop
属性,则必须以这种方式定义隔离范围:'propVar' : '=prop'
。
2)指令的子元素绑定到控制器范围而不是指令范围。如果您希望子元素成为指令的一部分,您可以在指令中使用模板:
app.directive('myDir', function() {
return {
restrict: 'A',
template: '<div><p>linkVar: {{ linkVar }}</p><p>propVar: {{ propVar }}</p><p>foo: {{ foo }}</p><button ng-click="foo=\'directive sucks\'">press me</button></div>',
scope: {
propVar: '=prop'
},
link: function(scope, elem) {
console.log(elem)
scope.linkVar = 'It works!'
console.log(scope);
},
}
})
查看修改后的PLUNKR:http://plnkr.co/edit/MHXXkmPdtfAUqtre4Fbg?p=preview