无法在指令中访问AngularJS属性

时间:2015-04-01 15:31:00

标签: javascript angularjs angularjs-directive angularjs-scope

我目前正在尝试在AngularJS中实现一个非常简单的指令。 最后,我希望能够像这样使用指令:

<share-buttons url="google.com"></share-buttons>

我的指令看起来像这样(咖啡脚本):

module.directive 'shareButtons', () ->


    controller = ['$scope', ($scope) ->

        $scope.share = () ->
            console.log $scope.url

    ]

    return {
        restrict: 'EA'
        scope: {
            url: '=url'
        }
        templateUrl: viewpath_common('/directives/share-buttons')
        controller: controller
    }

这是我的模板(Jade):

.social-icons
    button.btn.btn-li(ng-click="share()")
        i.fa.fa-linkedin.fa-fw

当我点击按钮时,会调用正确的函数($ scope.share),但记录的唯一内容是undefined

你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

因为你的url属性是双向数据绑定&#34; =&#34;

所以它正在寻找像这样的范围变量:

$scope.google.com =  // should be some value.

从控制器传递给指令。

如果要传递字符串,请使用&#34; @&#34;用于单向绑定

scope: {
        url: '@'
}

注意:你也可以通过指令的链接功能中的属性访问它(你上面没有)

// like so
restrict: 'EA'
scope: {
    url: '@'
}
templateUrl: "someURL",
link: function(scope, elem, attrs) {
    console.log(attrs.url);
}