所以我有一个自定义指令,名为例如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: '=' }
希望这可以帮助