基于数组的ng-repeat更新模型

时间:2015-03-04 15:05:13

标签: javascript html arrays angularjs

很抱歉,如果您发现此问题的解决方案很简单或愚蠢。 需要有关此角度部分的建议或解决方案。

我有一个包含数组(“value”)的对象,如下所示。

scope.resp.DefaultData.graphRowData = [
        {YName:"Mary", value:[1,4], points:1},
        {YName:"Tom", value:[2,5], points:1}
        ];

我的代码查看器使用此样式呈现数组。

<table>
<tbody>
        <tr ng-repeat="rowLabels in resp.DefaultData.graphRowData track by $index">
            <th>
                <input type="text" value="{{rowLabels.YName}}" ng-model="rowLabels.YName"/>
            </th>                   
            <td ng-repeat="value in rowLabels.value track by $index">
                <input type="text" ng-model="value"/>
            </td>               
        </tr>   
    </tbody>
   </table>     

html查看器会像下面那样渲染:

<table>
<tbody>
<th>Mary</th><td>1</td><td>4</td>
<th>Tom</th><td>2</td><td>5</td>
</tbody>
</table>

现在问我的问题:

该表按照模型显示数据,但如果我尝试使用自定义更新表或编辑值,则不更新模型且值保持不变

例如:Mary有两个标记为1和4的值,如果我尝试将1更改为2和4更改为5,则模型内的数据保持不变而不更新。

有没有办法修复我的代码,或者我应该将数组更改为如下所示的对象数组

value:[{val:1},{val:4}] 

等等......对于resp.DefaultData.graphRowData下的其他对象?然后它会工作正常。只是混淆了为什么数组不能在我的代码中使用角度js! :(

1 个答案:

答案 0 :(得分:0)

您需要在ng-model

中传递数组的引用而不是值
<tr ng-repeat="rowLabels in resp.DefaultData.graphRowData track by $index">
            <th>
                <input type="text" value="{{rowLabels.YName}}" ng-model="rowLabels.YName"/>
            </th>                   
            <td ng-repeat="value in rowLabels.value track by $index">
                <input type="text" ng-model="rowLabels.value[$index]"/>
            </td>               
        </tr> 

检查此工作plunker