【问题标题】:AngularJs dynamic name for a form inside ng-repeat for changing arrayng-repeat 中用于更改数组的表单的 AngularJs 动态名称
【发布时间】:2017-04-29 13:32:06
【问题描述】:

我正在使用answer中建议的代码如下

<div ng-repeat="item in itemList" ng-init="formName = 'item_details' + $index">
 <form name="{{formName}}" ng-class="validateForm(formName)">
   //few form elements
 </form>
</div>

但我的问题是当数组(itemList)值更改时表单名称保持不变。我希望表单名称应该根据索引值更新。

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    不要使用$index,而是使用一些独特的属性,可能是item有自己的id属性,它定义了item的唯一性。所以ng-init 看起来像formName = 'item_details' + item.id"

    <div ng-repeat="item in itemList" ng-init="formName = 'item_details' + item.id">
     <form name="{{formName}}" ng-class="validateForm(formName)">
       //few form elements
     </form>
    </div>
    

    我什至想知道,您在为每个表单设置唯一名称时需要什么?你可以有嵌套的表单,innerForm 会被单独验证。此后验证将处理的方式是,当所有innerForm 都有效时,outForm 有效。当innerForm 中的任何一个无效时,outerForm 将在这种情况下无效。

    <ng-form ng-repeat="item in itemList" name="outerform">
     <form name="innerForm" ng-class="validateForm(innerForm)">
       //few form elements
     </form>
    </div>
    

    【讨论】:

    • 感谢您的回复。我将表单名称初始化为name="innerForm{{$index}}" 并且有效,即使我删除表单名称也随之发生变化。
    • @Kartik 不,它不应该是$index 删除项目时也是一样的,你试过我的建议了吗?
    • @Kartik 我的回答有帮助吗?
    • 根据您的建议,我不能使用 item.id,因为没有与之关联的 id 值并且我无法更改我的数组对象。是的,$index 起作用了,因为我只想要根据索引值的表单名称。如果更改了 arrat 值,则表单名称也会根据其索引值进行修改。谢谢
    猜你喜欢
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 2017-01-07
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多