2017-05-31 31 views

回答

2

這應該是很優雅:PLNKR

var app = angular.module('plunker', []); 

app.controller('MainCtrl', function($scope) { 
    $scope.radio = new Array(4).fill(false) 
    $scope.changed = function(el){ 
    $scope.radio = $scope.radio.map((v,i)=>i==el) 
    } 
}); 

和HTML:

<div>{{radio[0]}}|{{radio[1]}}|{{radio[2]}}|{{radio[3]}} 
    <br/> 
    <input ng-repeat="r in radio track by $index" type="checkbox" ng-model="radio[$index]" ng-change="changed($index)" /> 
+1

嘗試'新的陣列(長度).fill僞(假)' – Rajesh

+0

謝謝,忘了這一個:) –

+0

你剛纔吹我的腦海裏笑。你還教我填充(錯誤)你的答案!謝謝...現在測試出來 –

1

嗯,我想創造變化按您的要求。看看這是否適合你。

var app = angular.module('plunker', []); 

app.controller('MainCtrl', function($scope) { 

    $scope.checkbox = [false,false,false,false]; 

    $scope.changeStatus = function(index){ 
    //fill in not supported in IE and opera 
    $scope.checkbox.fill(false); 
    //Uncomment and Use this in IE and Opera in case fill throw error 
    //for(let i = 0 ; i < $scope.checkbox.length; ++i){ 
    // $scope.checkbox[i] = false; 
    //} 

    if($scope.checkbox[index]) 
     $scope.checkbox[index] = false; 
    else 
     $scope.checkbox[index] = true; 

    console.log($scope.checkbox); 
    } 
}); 

而且你的HTML代碼將是

<body ng-controller="MainCtrl"> 
    <div> 
    <br/> 
    <input type="checkbox" ng-model="checkbox[0]" ng-click='changeStatus(0)' /> 
    <input type="checkbox" ng-model="checkbox[1]" ng-click='changeStatus(1)'/> 
    <input type="checkbox" ng-model="checkbox[2]" ng-click='changeStatus(2)' /> 
    <input type="checkbox" ng-model="checkbox[3]" ng-click='changeStatus(3)' /> 
    </div> 
</body>