在AngularJS中传递像属性一样的数据

时间:2017-08-28 15:32:26

标签: angularjs

我做了一个指令来调用博客门户的相关帖子。它应该通过传递阅读帖子的标签来工作,就像一个名为"标签"的属性。但是当我尝试这样做时,指令返回文字内容而不是变量值。

<!-- Here works fine -->
<related-posts labels="post.labels"> {{ labels }} </related-posts>

// Here my issue
app.directive('relatedPosts', function ($http) {
    return {
        restrict: 'E',
        templateUrl: 'app/components/templates/related-posts.html',
        scope: {
            labels: '='
        },
        controller: function($scope, $element, $attrs) {
            console.log($attrs['labels']); // returns "post.labels" instead "Label 1, Label 2, etc..."
        }
    }
});

1 个答案:

答案 0 :(得分:2)

请访问此类变量。

说明:您已正确设置了范围,但您使用$attrs.labels只会将标签值作为文本访问,因此您获得了post.labels在范围内,您需要像$scope.labels

那样访问它

JSFiddle

<!-- Here works fine -->
<related-posts labels="post.labels"> {{ labels }} </related-posts>

// Here my issue
app.directive('relatedPosts', function ($http) {
    return {
        restrict: 'E',
        templateUrl: 'app/components/templates/related-posts.html',
        scope: {
            labels: '='
        },
        controller: function($scope, $element, $attrs) {
            console.log($scope.labels); 
        }
    }
});