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-click
和 ng-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模板标签有时不评估的主要内容,如果未能解决你的问题,请参考以下文章