【问题标题】:How to interpolate expressions in ng-messages directive?如何在 ng-messages 指令中插入表达式?
【发布时间】:2017-04-04 21:49:47
【问题描述】:

假设我有一个表单名称“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 测试了这个问题,并且两者都存在这个问题。任何帮助表示赞赏。谢谢。

【问题讨论】:

  • 你能检查ng-attr-ng-messages="{{formName}}.$error"是否有效吗?
  • @gustavohenke 刚试过。结果和前面一样。这没用。给我这个<div ng-attr-ng-messages="{{formName}}.$error"></div>

标签: angularjs ng-messages


【解决方案1】:

ng-messages=this[formName].$error

【讨论】:

  • 请解释你的答案。它目前被视为低质量的帖子。谢谢!
  • @OmarMeky 您的演示帮助很大!我进行了必要的更改,它现在对我有用。万分感谢!!!只是想在检查浏览器中的元素时添加它,它不显示插值。但是脚本可以正常工作。
  • 很高兴它有帮助!
  • @OmarMeky 嗨!如果你有机会,你能看看我在stackoverflow.com/questions/35137877/… 上发布的一个新的 ngMessages 相关问题吗?谢谢。
【解决方案2】:

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

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

会工作,为我工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 2017-01-05
    • 2016-03-11
    • 1970-01-01
    • 2013-06-14
    相关资源
    最近更新 更多