AngularJs模板标签有时不评估

Posted

技术标签:

【中文标题】AngularJs模板标签有时不评估【英文标题】:AngularJs template tags not evaluating sometimes 【发布时间】:2013-10-25 04:58:13 【问题描述】:

我想知道为什么模板标签 [[ opt.option ]] 有时不会在以下代码中评估为值

<span ng-repeat="opt in options"><button ng-click="button = [[ opt.option ]]" ng-class=" active : button == [[ opt.option ]] ng-cloak><i class="icon-tick visible-in-active" ></i>[[ opt.option ]] </button> </span>

正在输出的按钮名称意味着用于命名按钮的模板标签正在工作,但是当我单击任何按钮时,没有一个处于活动状态,这意味着 ng-clickng-class 的模板标签没有评估。这是为什么?

编辑 我正在使用 django,所以我不得不用 [[]] 覆盖 ,因为 django 也使用这些标签

我想实现THIS.,当一个按钮被点击时,它变为活动状态,而前一个活动的变为非活动状态。这就是JsFiddle

【问题讨论】:

【参考方案1】:

你需要使用 而不是 [[ ]]

【讨论】:

他可能已经覆盖 $interpolateProvider 以使用 [[]] 而不是 。如果不这样做,它将永远无法工作。 添加解释会很好。 有趣的不知道:)虽然我不认为他改变了,但他会说 @EranH。我实际上正在使用 django,所以我不得不用 [[]] 覆盖 ,因为 django 也使用这些标签 。我已经编辑了这个问题。【参考方案2】:

在 ng-click 和 ng-class 中,您不需要使用数据绑定运算符。你可以说:

<button ng-click="button = opt.option" ng-class=" active : button == opt.option ">

Angular 中的数据绑定运算符也是 而不是 [[ ]]。

最后,你有一个错字并且没有关闭打开按钮标签(你错过了最后一个'>')

更新 - 正如所指出的,绑定运算符可以自定义,所以这实际上不是问题。

更新 - 这是一个例子:http://plnkr.co/edit/t4hmRmJCI22bjqMe1Jc4?p=preview

【讨论】:

需要注意的是,这是可自定义的。他本可以将其从 更改为 [[]]。 @JonathanRowny 从来不知道!感谢您指出。该功能有什么实际用途吗? 我确定有,但不是我能想到的......也许你只是讨厌波浪形的括号?这里有一个如何做的例子:docs.angularjs.org/api/ng.$interpolateProvider 我突然想到“实际用途”是他正在使用 Django 模板,并且不想逃避 Django 模板使用的所有那些胡须。所以 [[]] == 客户端和 == 服务器端。我们太离题了! @ksimons 我已经尝试过了,但仍然无法正常工作。请检查我添加的小提琴。

以上是关于AngularJs模板标签有时不评估的主要内容,如果未能解决你的问题,请参考以下文章

angular js 和 dajango 标签{{}} 冲突

Django和Angular.js模板标签冲突的解决方式

AngularJS 的常用特性

Angular.js数据绑定时自动转义html标签及内容

为啥有时 Angular JS 在登录后立即得到 401?

AngularJS 中的 Google 登录按钮有时不显示