我在推送函数中添加了属性以隐藏标签并显示输入,但是当用户单击“保存更改”时,我想做相反的事情,即隐藏输入并显示标签。我正在使用 ng-hide
<tr ng-repeat="personalDetail in personalDetails">
<td>
<label ng-hide="personalDetail.lab" for="settings"> {{personalDetail.Sname}}</label>
<input ng-show="personalDetail.lab" type="text" ng-model="personalDetail.Sname" />
</td>
<td>
<label ng-hide="personalDetail.lab" data-val="{{personalDetail.Settings}}" for="desc">{{personalDetail.Settings}}</label>
<input style="display:none" data-val="{{personalDetail.Settings}}" ng-model="personalDetail.Settings" type="text" value="{{personalDetail.Settings}}" />
<input ng-show="personalDetail.lab" ng-model="personalDetail.Settings" type="text" value="{{personalDetail.Settings}}" />
</td>
<input type="button" class="btn btn-success pull-right btn-space" ng-click="save()" value="Save Changes" />
$scope.addNew = function () {
$scope.personalDetails.push({
'Sname': "",
'Settings': "",
'lab' : true
});
$scope.save = function () {
$scope.personalDetails.lab = false;
}
最佳答案
如果 save
按钮在 ng-repeat
之外并且您想更改所有数组元素的 lab
属性,您只需要在 personalDetails
数组上使用 map
,如下所示:
$scope.save = function() {
$scope.personalDetails = $scope.personalDetails.map(function(detail) {
detail.lab = false;
return detail;
});
}
这将更新所有 personalDetails
对象。
关于javascript - 隐藏推送的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45562936/