【问题标题】:Angular dynamically set ng-messages to name attributeAngular 动态地将 ng-messages 设置为 name 属性
【发布时间】:2015-10-06 00:52:37
【问题描述】:

我动态创建输入并希望验证每一个输入,但无法将ng-messages 属性正确设置为动态生成的字段名称属性。

<input ng-model="sub.name" name="subName{{$index}}" class="form-control" placeholder="name" required maxlength="20" />
<div class="field-error" ng-messages="form.subName{{$index}}.$error" ng-show="form.Name.$touched" role="alert">
    <div ng-message="required">Name is required.</div>
</div>

第二行出现问题,我将ng-messages 动态设置为ng-messages。我该怎么做?

【问题讨论】:

  • 是的,我遇到了错误,我无法使用 {{}} 语法发送 ng-messages 属性,“错误:[$parse:syntax] 语法错误:令牌'{'是列中的意外令牌表达式 [form.subName{{index}}.$error] 的第 13 个开始于 [{{index}}.$error]"
  • 这很奇怪,因为我可以在输入的 name 属性上设置它,但不能在 ng-messages 上设置:/
  • 这段代码在 ng-repeat 中??
  • 是的,它在里面 ng-repeat

标签: javascript angularjs validation ng-messages


【解决方案1】:

也可以使用括号来访问表单对象的属性,这应该可以解决您的问题:

<input ng-model="sub.name" name="subName{{$index}}" class="form-control" placeholder="name" required maxlength="20" />
<div class="field-error" ng-messages="form['subName' + $index].$error" ng-show="form.Name.$touched" role="alert">
    <div ng-message="required">Name is required.</div>
</div>

【讨论】:

  • 谢谢你,遇到了同样的问题,它对我有用。你能解释一下为什么 form[] 存在吗?
  • "form" 是表单上的名称,所以
    你也可以使用
    和 ng-messages 指令看起来像这样 ng-message="myForm['subName'...]。这是可行的,应该是公认的答案
  • 此代码仅适用于我将 ng-show="form.Name.$touched" 更改为 ng-show="form['subName' + $index].$touched"跨度>
  • 感谢这个信息真的帮助了我,正在使用 ng-messages 但我的输入字段的名称格式为“firstpart.secondpart”,角度无法理解。但是使用 form['firstpart.secondpart'].$error 解决了这个问题。谢谢。
猜你喜欢
  • 1970-01-01
  • 2018-07-11
  • 1970-01-01
  • 2016-03-05
  • 1970-01-01
  • 2021-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多