属性值被解析为指令中的字符串,尽管使用了“字符串”=&”;

Attribute value being parsed as string in directive despite using "="

本文关键字:字符串 指令 属性      更新时间:2023-09-26

我正在尝试创建一个自定义指令,并向其中发送一个数组以创建一个动态模板。我看了这两个问题:

将数组绑定到AngularJS 中的指令变量

通过属性将数组传递给AngularJS指令

我基本上使用相同的代码,但当我控制台记录tAttrs时,它只显示标记为"testArray",而不是Array(2),因为如果tags="testArray"被正确解释的话。

据我所见,我在这里没有做错任何事,所以这有点让我发疯,为什么它不起作用。

有人能指出为什么这没有像预期的那样奏效吗?

包含阵列的控制器:

forumApp.controller('profileCtrl', ['$scope', function($scope) {
    $scope.testArray = ['displayName', 'email'];
}

指令标记:

<error tags="testArray"></error>

指令:

forumApp.directive('error', [function() {
    return {
        restrict: 'E',
        scope: {
            tags: "="
        },
        template: function(tElement, tAttrs) {
            console.log(tAttrs);
            return "<div ng-if='row.model === " + tAttrs.tags[0] + "'>Hello world</div>";
        }
    }
}]);

如果要将数组放在隔离范围内,则不再需要tAttrs:

template: function(tElement) {
            return "<div ng-if='row.model === " + tags[0] + "'>Hello world</div>";
        }

上面的模板将在隔离的作用域上查找tagstAttrs正在从元素中移除原始属性。