【问题标题】:Values are duplicated into all input field which is created using the ng-repeat and ng-model值被复制到使用 ng-repeat 和 ng-model 创建的所有输入字段中
【发布时间】:2023-03-14 01:25:01
【问题描述】:

我正在使用ng-repeat 动态创建输入字段,一切似乎工作正常并且输入字段已创建但由于某种原因,当我在创建的输入字段中输入一些值时,由于双向数据绑定值同时输入到所有创建的文本字段中。

据我所知,我为每个创建的字段分配了不同的 ng-model,所以我不确定为什么要复制这些值。当我尝试打印分配给字段上方输入字段的值时,我看到 id 不同,想知道为什么所有字段都采用相同的值以及如何防止它。

HTML Code:

<tr>
    <td ng-repeat="extension in ExtensionList">
        <!-- Here the value displayed are different -->
        {{ formdata.extension.ExtensionVlaues }}
        <input type="text" class="form-control" id="extension.ExtensionVlaues" ng-model="formdata.extension.ExtensionVlaues">
    </td>
</tr>

这是前端的截图:

这里是我ExtensionList的例子:{"Field1":"","Field2":"","Field3":1,"ExtensionVlaues":2}

据我所知,给定的ng-model 有所不同,但仍然无法正常工作。谁能帮我解决这个问题?我尝试了一些类似ng-model="formdata.extension[ExtensionVlaues]" 的方法,但仍然没有运气。

我尝试像这样分配 ng-model 但它不起作用:

  1. ng-model="formdata.extension[ExtensionVlaues]"

根据以下答案,我尝试了 2 种不同的方法,但它不起作用并遇到相同的问题。请告诉我如何解决这个问题:

<td ng-repeat="(key, extension) in ExtensionList">
    <input type="text" ng-model="formdata.extension.key">
</td>

<td ng-repeat="(key, extension) in ExtensionList">
    <input type="text" ng-model="formdata.extension.ExtensionVlaues">
</td>

【问题讨论】:

    标签: angularjs angularjs-directive angularjs-ng-repeat angular-ngmodel ng-bind-html


    【解决方案1】:

    以防其他人也对这个问题提出异议:

    <span ng-repeat="(key, extension) in ExtensionList" class="form-inline">
        <br/>                                       
        <span>
            {{ extension.NameSpace + ":" + extension.LocalName }}
        </span>&ensp;
        <input type="text" class="form-control" id="extension.ExtensionVlaues" ng-model="ExtensionList.extension[key].FreeText" ng-blur="ExtensionText(ExtensionList.extension[key].FreeText, extension.ExtensionVlaues)">
    </span>
    

    【讨论】:

      【解决方案2】:

      您正在尝试将 ExtensionList 用作数组。您需要将其用作具有 ng-repeat 的对象:

      <td ng-repeat="(key, extension) in ExtensionList">
          <input type="text" ng-model="formdata[extension][key]">
      </td>
      
      <td ng-repeat="(key, extension) in ExtensionList">
          <input type="text" ng-model="formdata[extension][ExtensionVlaues]">
      </td>
      

      【讨论】:

      • 感谢您的回复。我试过这个,我看到了同样的问题。我已根据您的评论添加了新代码。请您看一下并帮助我吗?
      • 再次尝试使用括号表示法,我在上面编辑了我的回复。我不确定您的数据是什么样的,但我猜ExtensionVlause 应该是ExtensionValues
      • 感谢您的回复。我试过了,现在它工作正常&lt;input type="text" class="form-control" id="extension.ExtensionVlaues" ng-model="ExtensionList.extension[key].FreeText" ng-blur="ExtensionText(ExtensionList.extension[key].FreeText, extension.ExtensionVlaues)"&gt;
      猜你喜欢
      • 2012-11-22
      • 2017-02-11
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-19
      • 2014-06-28
      • 1970-01-01
      相关资源
      最近更新 更多