如何在隔离范围中设置范围变量与链接功能

时间:2014-01-28 17:22:29

标签: javascript angularjs angularjs-directive angularjs-scope

我正在尝试在隔离范围中设置变量,但我无法访问我在隔离范围内的链接函数中设置的变量,而且可以访问控制器的变量。

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

1 个答案:

答案 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