javascript – AngularJS获得单个字段的$pristine状态
作者:互联网
我在Angular中有一个包含字段行的表单,其中每行都是一个ng-repeat块:
<form name="myForm><table>
<tr class="item-row" ng-repeat="item in items">
<td>
<input type="text" ng-model="item.width" ng-change="processItem(item)">
</td>
<td>
<input type="text" ng-model="item.relatedWidth" ng-change="processItem(item)">
</td>
</tr>
</table></form>
在我的$scope.processItem(item)方法中,我希望item.relatedWidth仅在item.relatedWidth的字段是pristine时匹配item.width的值 – 即它没有被用户编辑.如果用户编辑该字段,则应将其解耦.
在伪代码中我想这样做:
$scope.processItem = function(item){
if(the field for item.relatedWidth is pristine){
item.relatedWidth = item.width;
}
}
我可以看到该字段具有类ng-pristine或ng-dirty但我不知道如何以Angular方式获取此值.
如果通过ng-repeat动态渲染它,我如何读取该字段的$pristine / $dirty状态?
解决方法:
您需要将ng-form指令添加到每一行,将name属性添加到输入并将relatedWidth输入的pristine状态传递给processItem函数:
<form name="myForm">
<table>
<tr class="item-row" ng-repeat="item in items" ng-form="itemForm">
<td>
<input type="text" name="width" ng-model="item.width"
ng-change="processItem(item, itemForm.related_width.$pristine)">
</td>
<td>
<input type="text" name="related_width" ng-model="item.relatedWidth"
ng-change="processItem(item)">
</td>
</tr>
</table>
</form>
控制器:
$scope.processItem = function(item, relatedPristine){
if(relatedPristine === true){
item.relatedWidth = item.width;
}
};
标签:javascript,angularjs,angularjs-ng-repeat 来源: https://codeday.me/bug/20190830/1769185.html