Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尽管使用“=”,但在指令中将属性值解析为字符串_Javascript_Arrays_Angularjs_Angular Directive - Fatal编程技术网

Javascript 尽管使用“=”,但在指令中将属性值解析为字符串

Javascript 尽管使用“=”,但在指令中将属性值解析为字符串,javascript,arrays,angularjs,angular-directive,Javascript,Arrays,Angularjs,Angular Directive,我正在尝试创建一个自定义指令,并向其中发送一个数组来创建一个动态模板。我已经研究了这两个问题: 我使用的代码基本相同,但当我控制台记录tAttrs时,它只将标记显示为testArray,而不是正确解释tags=testArray时的Array2 从我所能看到的,我在这里没有做错任何事,所以这有点让我发疯为什么它不工作 有人能指出为什么这不能像预期的那样工作吗 包含阵列的控制器: forumApp.controller('profileCtrl', ['$scope', function($sco

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

我使用的代码基本相同,但当我控制台记录tAttrs时,它只将标记显示为testArray,而不是正确解释tags=testArray时的Array2

从我所能看到的,我在这里没有做错任何事,所以这有点让我发疯为什么它不工作

有人能指出为什么这不能像预期的那样工作吗

包含阵列的控制器:

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:


上面的模板将查找隔离范围上的标记。tAttrs正在从元素中提取原始属性。

您的指令有问题。第一:属性不是获取范围值的正确方法。第二:您正在创建隔离作用域,并且可能正在使用父作用域行中的值。@UfukHacıoğulları请给出如何更改它的建议,从我包含的问题来看,似乎确实是这样做的?让我有点困惑。如果超出指令,您可以移动ng:。那么您就不需要在指令中创建隔离作用域。@UfukHacıoğulları不确定这是否适用于完整的示例,因为我在div中还有其他元素也使用if-statements。您无法访问隔离作用域中的父作用域元素。你知道吗?指令范围中未定义行。
template: function(tElement) {
            return "<div ng-if='row.model === " + tags[0] + "'>Hello world</div>";
        }