2017-08-08 151 views
2

我已经添加属性的推送功能来隐藏标签并显示输入,但当用户点击保存更改我想做相反的事情,即隐藏输入并显示标签。我使用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; 
    } 
+4

请花时间正确地设置您的问题的格式。这是一个难以理解的混乱,从 –

+0

开始保存在ng-repeat中的输入是什么? – Vivz

+0

没有它的外部,我只是在这里展示它 –

回答

0

由于$scope.personalDetails是一个数组,你必须使用索引来访问每个属性。因此,循环访问数组并更改实验室属性。

$scope.save = function() { 
    for(var i=0;i<$scope.personalDetails.length;i++) 
    $scope.personalDetails[i].lab = false; 
    } 
1

如果save按钮是ng-repeat的外面,你想改变所有的数组元素的lab财产,你只需要在personalDetails阵列像这样使用map

$scope.save = function() { 
    $scope.personalDetails = $scope.personalDetails.map(function(detail) { 
    detail.lab = false; 
    return detail; 
    }); 
} 

这将更新所有personalDetails对象。