所以我有一个自定义指令,名为例如custom,如下所示:

app.directive('custom', function()
{
    return {

        restrict: 'A',
        scope: { itemSelector: '=custom', gutter: '=' },
        link: function(scope, element, attrs){
            console.log("IS: " + scope.itemSelector);
            console.log("GUTTER: " + scope.gutter);
        }
    }
}


通过HTML调用,如下所示

<div custom="item" gutter="10"><!--content--></div>


谁能建议为什么scope.gutter === '10'scope.itemSelector === undefined吗?

这样可以获取定义属性的指令的值吗?

谢谢

最佳答案

我猜项目未在指令的父范围中定义。以下帖子(AngularJS Directive Passing String)中介绍了两种解决方案


您要么希望将项目作为字符串传递,并在其周围添加单引号(默认情况下,它被评估为角度表达式)

<div custom="'item'" gutter="10"><!--content--></div>
或更改您的指令配置,以使其将custom属性视为字符串:
范围:

{ itemSelector: '@custom', gutter: '=' }


希望这可以帮助

09-25 14:13