2

假设我有一个表单名称"signupForm"。当我在按钮上使用 ng-disabled 指令时(禁用表单以防其无效),我使用 ng-disabled="{{formName}}.$invalid">(formName 包含值signupForm

当我检查浏览器中的按钮时,上述指令的计算结果为ng-disabled="signupForm.$invalid">. 太棒了。问题是当我尝试在 ng-messages 指令中使用相同的表达式时,例如:ng-messages ="{{formName}}.$error">表达式没有被插值。因此,如果我在 div 上使用该指令并在浏览器中检查它,我会看到它: <div ng-messages="{{formName}}.$error"></div>而我希望它显示为<div ng-messages="signupForm.$error"></div>. 但这不会发生。

那么如何使 ng-messages 指令插入表达式并正确显示呢?我已经用 AngularJS 1.4.7 和 1.5.0-rc.1 测试了这个问题,并且两者都存在这个问题。任何帮助表示赞赏。谢谢你。

4

2 回答 2

2

ng-messages=this[formName].$error

于 2016-01-20T13:17:53.770 回答
0

ng-messages 不允许在属性值中插值。
但我们可以传递要评估的表达式。
html 中的this表示当前范围,它也包含有关表单的所有信息以及验证。您可以登录并查看自己。

ng-messages="this[formName][fieldName].$error"   
ng-messages="this[formName].$error"   

会工作,为我工作

于 2017-04-04T13:49:47.630 回答