2017-08-08 150 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對象。