$ eval在ng-repeat

时间:2016-08-31 07:44:57

标签: angularjs

我的指示:

app.directive('showTitle', () => ({
    restrict: 'A',
    link (scope, ele, attrs){
        console.log(ele.text());
        if (/\{\{.*\}\}/.test(ele.text())) {
            ele.attr('title', scope.$eval(ele.text()));
        } else {
            ele.attr('title', ele.text());
        }
    }
})

我的模板:

<div ng-repeat="item in record.records">
    <p show-title>{{item.module}}</p>
</div>

我已尝试删除{{}},但这也无效。

  

angular.js:9383错误:[$ parse:syntax]语法错误:令牌   &#39; item.module&#39;是出乎意料的,期待[:]在第3列   表达式[{{item.module}}]从[item.module}}开始。

1 个答案:

答案 0 :(得分:1)

你不需要明确评估内插绑定的第一个地方,angular将负责这一点,它在编译DOM时直接评估小胡子{{}}表达式。

可能是您已将$interpolateProvider配置为其他内容,例如[[ ]] / << >>,这就是为什么您需要进行此手动转换,因此您可以明确地使用$interpolate服务来评估价值。

ele.attr('title', $interpolate(ele.text())(scope));