2016-02-12 84 views
3

我試圖以ng-hide爲真的方式設置此<input>,無論ng-model是什麼都重置。當ng-hide爲真時清除輸入ng-model AngularJS

<input type="text" class="form-control" ng-model="account.AccountName" ng-hide="account.AccountStatus == 'Terminated'"> 

所以會有含ActiveTerminated綁定到ng-model="account.AccountStatus"的下拉列表。當它是Active時,字段Account Name將在那裏有文本。我想要做到這一點,當我切換到Terminated時,該輸入字段被隱藏,並且account.AccountName被設置爲「」。

回答

2

您可以使用[NG-變化]屬性,並在控制器中定義的函數來處理更改事件和復位AccountName如果AccountStatus等於'Terminated'。 實施例:

<input type="text" class="form-control" ng-model="account.AccountName" ng-hide="account.AccountStatus == 'Terminated'"> 
    <select ng-change="selectChange()" name="selectState" ng-model="account.AccountStatus"> 
     <option value="Active">Active</option> 
     <option value="Terminated">Terminated</option> 
    </select> 
    <script> 
     angular.module('examleModule', []).controller('exampleController',['$scope', function($scope) { 
     $scope.account = { 
      AccountStatus: 'Active', 
      AccountName: '' 
     }; 

    $scope.selectChange= function() { 
     // Reset AccountName if AccountStatus=='Terminated' 
     if($scope.account.AccountStatus=='Terminated') 
      $scope.account.AccountName = '';  
    }; 
    }]); 
    </script> 
2

<select ng-model="account.AccountStatus" 
    ng-change="resetAccountName(account.AccountStatus == 'Terminated')"> 
    ....... 
    options goes here 
    ....... 
</select> 

然後在你的控制器創建函數resetAccountName這樣

$scope.resetAccountName = function(flag){ 
    if(flag == true){ 
     $scope.account.AccountName = ""; 
    } 
} 
2

您可以在AccountStatus變量綁定到清除帳戶名變量的函數,例如在您的控制器中:

$scope.$watch('AccountStatus', function(status) { 
    if (status == 'Terminated') 
     $scope.AccountName = null; 
})