2015-09-16 33 views
0
  • 我有兩個列表(列表1和列表2)的複選框,其中三個項目 在這兩個列表中都可用。我的問題是,當我檢查列表1項目 然後列表2項目也檢查不知道爲什麼。我需要停止這一點。我的 要求是當我檢查列表1項目,那麼它不會影響 列表2項目。請幫助

Fiddle Here如何檢查角js中的複選框?

VIEW

<div ng-app="checkbox" ng-controller="homeCtrl"> 
    <div ng-repeat="item in list"> 
     <input type="checkbox" ng-model="item.checked" 
      ng-click="fnChangeAssetType1(item)" /> 
     <label>{{item.value}}</label> 
    </div> 
    <br/><br/> 
    New List<br/><br/> 
    <div ng-repeat="items in lists"> 
     <input type="checkbox" ng-model="items.checked" 
      ng-click="fnChangeAssetType(items)" /> 
     <label>{{items.value}}</label> 
    </div> 

</div> 

JS

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

app.controller('homeCtrl', function($scope) { 
     var list = [{ 
      "id": 1, 
      "value": "apple", 
     }, { 
      "id": 3, 
      "value": "orange", 
     }, { 
      "id": 5, 
      "value": "pear" 
     }]; 

    $scope.list=list; 
    $scope.lists=list; 

    $scope.fnChangeAssetType = function (items) { 
     angular.forEach($scope.lists, function (item) { 
      item.checked = false; 
     }); 
     items.checked = true; 
    }; 
    $scope.fnChangeAssetType1 = function (items) { 
     angular.forEach($scope.list, function (item) { 
      item.checked = false; 
     }); 
     items.checked = true; 
    }; 

    }); 

回答

3

這是因爲你的$scope.list & $scope.lists由於數組(list)是一個引用類型,兩者都指向內存中的相同數組。你需要做的是爲$scope.lists創建一個單獨的數組,如下所示。

你需要使用angular.copy()

$scope.list=list; 
$scope.lists= angular.copy(list); // this will create a deep copy of list array and store it in another memory slot, //refer the angular.copy doc 

這裏是更新fiddle

+0

@K。 Toress: - 真的很欣賞這一點。工作順利。 –

+0

很高興在這裏幫助你:) –