一尘不染

AngularJS指令范围未解决(“未定义attr名称”错误)

angularjs

指令代码

mymodule.directive('eicon', function(){
    return {
        restrict: 'E',
        scope: {
            attr: '='
        },
        template: "test " + attr.name
    }
});

HTML

<tr ng-repeat="e in entities">
    <td><eicon attr="e"></eicon></td>
</tr>

我遇到此错误:ReferenceError: attr is not defined。怎么了?


阅读 205

收藏
2020-07-04

共1个答案

一尘不染

attr在作用域中是可访问的,因此您可以scope.attr在控制器或链接阶段或{{attr}}模板中进行访问。一个简单的解决方案是将模板更改为

mymodule.directive('eicon', function(){
    return {
        restrict: 'E',
        scope: {
            attr: '='
        },
        template: "test {{attr.name}}",
        link: function (scope, element, attrs) {
          console.log(scope.attr);
        },
        controller: function (scope) {
          console.log(scope.attr);
        }
    }
});
2020-07-04