在指令中更改原始文本后恢复原始文本

时间:2016-08-30 18:13:45

标签: angularjs forms parsing

我使用指令将按钮上的文字更改为"请等待","成功"或者"失败"表单提交时。当用户更改字段时,它将恢复为原始值。

我是通过在使用

设置之前存储原始值来实现的
{

通常,它工作正常,但使用像

这样的可变按钮文本
$formElement.find("button").text();

它失败了,因为我得到了评估的表达式,即翻译了"更新"或翻译"创建",但我需要表达。

所以,我转而在指令的开头,我得到了

<button>{{(entity.id ? "update" : "create") | translate}}</button>

那没关系,但我怎么评价呢?我试过了

{(entity.id ? "update" : "create") | translate}}

但它会导致

  

angular.js:13236错误:[$ parse:syntax]语法错误:令牌&#39; {&#39;表达式[{{(entity.id?&#34; update&#34;:&#34; create&#34;)|的第2列的无效键翻译}}]从[{(entity.id?&#34; update&#34;:&#34; create&#34;)|开始翻译}}]。

我可以剥掉大括号,但是 $parse(buttonText) 这样的表达式会变得更复杂,所以唯一干净的方法是使用angularjs使用的方法。但它是什么?

我也想处理Add {{item}} to {{list}},所以我的指示是通用的。

1 个答案:

答案 0 :(得分:0)

整个问题混淆了$parse$interpolate。所以解决方案就是

var buttonText = button.text();

开头和

button.text($interpolate(buttonText)($scope));

恢复它。