我有一个简单的表格行。
该行由以下代码生成。
<tr ng-init="cacheChanged">
<td>Expiration Period</td>
<td ng-repeat="system in tableData.regions[0].systems">
<input type="text" ng-model="system.cacheDuration" ng-change="cacheChanged=true">
<span>h</span>
</td>
<td>
<button type="button" ng-click="saveCache()" ng-disabled="!cacheChanged">Save</button>
</td>
</tr>
如果更改了四个值中的任何一个,则应启用保存按钮。但是,它仍然一直处于禁用状态。谁知道为什么?提前谢谢!
答案 0 :(得分:1)
在您的情况下,您应该使用$parent.cacheChanged
而不是cacheChanged
变量。因为ng-repeat
确实在渲染DOM时为每个循环创建子范围。简而言之,cacheChanged
中的ng-repeat
变量与cacheChanged
上使用的button
变量不同。
加价
<td ng-repeat="system in tableData.regions[0].systems">
<input type="text" ng-model="system.cacheDuration" ng-change="$parent.cacheChanged=true">
<span>h</span>
</td>
有更好的方法可以在定义Dot rule
时使用ng-model
,请查看详细answer here。