javascript - 隐藏推送的属性

标签 javascript jquery angularjs arrays object

我在推送函数中添加了属性以隐藏标签并显示输入,但是当用户单击“保存更改”时,我想做相反的事情,即隐藏输入并显示标签。我正在使用 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/

相关文章:

javascript - 在 asp.net mvc 中使用 angularjs 进行多重布局

javascript - 循环中的 JQuery.Ajax 会提取相同的数据,无论 url 如何

javascript - 在 jquery datepicker 中启用一个特定日期

带有旋转插件的 jQuery flot 隐藏 x 轴标签

angularjs - 我怎样才能传回从AngularJS服务 promise ?

javascript - AngularJS+Typescript - 指令内的 Controller

javascript - 模态 Div 填充整个窗口,包括折叠下方

javascript - Cytoscape,如何突出显示点击的边缘?

javascript - 如何激活一个选项并禁用其他选项

javascript - 在 div 外部单击后删除类