保持动态表与AngularJS

时间:2015-09-06 14:16:57

标签: angularjs data-binding binding model html-table

我有以下示例模型:

{
 a:{
    x:0,
    z:0,
    f:1
   },
 b:{
   x:"a",
   u:"b"
   }
}

我将其呈现为两个不同的表

 <div class="col-sm-5">
                <h1>A</h1>
                <table>
                    <tr>
                        <th>Key</th>
                        <th>Value</th>
                    </tr>
                    <tr ng-repeat="(key,value) in schema.a">
                        <td>
                            <input type="text" ng-model="key" required>
                        </td>
                        <td>
                            <input type="text" ng-model="value" required>
                        </td>
                        <td></td>
                    </tr>
                </table>
            </div>
            <div class="col-sm-5 col-md-offset-2">
                <h1>B</h1>
                <table>
                    <tr>
                        <th>Key</th>
                        <th>Value</th>
                    </tr>
                    <tr ng-repeat="(key,value) in schema.b">
                        <td>
                            <input type="text" ng-model="key" required>
                        </td>
                        <td>
                            <input type="text" ng-model="value" required>
                        </td>
                        <td></td>
                    </tr>
                </table>
            </div>

这些表是动态的,这意味着我可以向其中添加新行。

现在,当我更改表格中的任何值时,它们未与模型同步 - &gt;无法编辑

  • 如何在原件中自动存储更改 模型?
  • 如果无法做到这一点,我如何从表中获取Json Schema 就像表格的渲染一样,所以我只需要 覆盖旧的?

1 个答案:

答案 0 :(得分:3)

首先,您无法动态更改对象属性名称或key。所以你试图用ng-model="key"做什么只是简单地工作。

至于value部分,您应该在ng-model

中使用对象引用
<tr ng-repeat="(key,value) in schema.b">
    <td>{{key}}</td>
    <td>
        <input type="text" ng-model="schema.b[key]" required>
    </td>
    <td></td>
</tr>

如果您需要能够编辑key,那么您需要将数据结构更改为对象数组,每个对象具有相同的键属性名称