2017-01-11 2 views
0

Я использую AngularJs, в котором у меня есть коллекция флажков, и установили один из выбранных элементов. Index.cshtml имеет следующий код:установите флажок по умолчанию нажатием кнопки в AngularJS

<div ng-controller="testController" ng-init="init()"> 
    <form name="mainForm" id="createForm" ng-submit="mainForm.$valid && add()" novalidate=""> 
     <div class="container" ng-show="createMenu"> 
     <div class="row"> 
      <div class="col-lg-2 col-md-2 col-sm-2 "> 
      <label>Delivery Method</label> 
      </div> 
      <div class="col-lg-2 col-md-2 col-sm-2" ng-repeat="method in deliveryMethods"> 
      <input type="checkbox" id="{{method.id}}" value="{{method.value}}" name="deliveryMethod[]" ng-model="method.selected" ng-click="toggleSelection(method.value)" ng-required="!someSelected"> {{method.value}} 

      </div> 

     </div> 
     <span style="color:red" ng-show="submitted == true && !someSelected">Delivery is required</span> 

     <input type="button" id="btnReset" value="Cancel" ng-click="reset()" /> 
     </div> 
    </form> 
    </div> 

данные флажка наполненные, как показано ниже в controller.js:

$scope.deliveryMethods = [{ 
    "id": 1, 
    "value": "test-up", 
    selected: true, 
}, { 
    "id": 2, 
    "value": "test two", 
    selected: false 
}, { 
    "id": 3, 
    "value": "test three", 
    selected: false 
}]; 

Здесь «тест-вверх» выбран по умолчанию. Если я выберу опцию «test two» и затем нажмите «Отменить», я хочу установить флажок «Тест» в качестве выбранного. Я попытался следующий код, но не работает:

$scope.clear = function() { 
    $scope.deliverySelection = ["test-up"]; 
    $scope.submitted = false; 
    $scope.clearAll(); 
} 

$scope.reset = function() { 
    $scope.clear(); 
} 
$scope.toggleSelection = function toggleSelection(deliveryMethods) { 
    var idx = $scope.deliverySelection.indexOf(deliveryMethods); 
    // is currently selected 
    if (idx > -1) { 
    $scope.deliverySelection.splice(idx, 1); 
    } else { 
    $scope.deliverySelection.push(deliveryMethods); 
    } 
    someSelected(); 
}; 
$scope.someSelected = true; 

function someSelected() { 
    $scope.someSelected = false; 
    for (var i = 0; i < $scope.deliveryMethods.length; i++) { 
    if ($scope.deliveryMethods[i].selected == true) { 
     $scope.someSelected = true; 
     return false; 
    } 
    } 
} 


$scope.clearAll = function() { 
    angular.forEach($scope.deliveryMethods, function(checkbox_id) { 
    if (checkbox_id.id != 1) 
     checkbox_id.selected = false; 
    }); 

} 

Как установить флажок «тест-вверх», как отмечено, при нажатии на кнопку отмены? Благодаря

ответ

1

попробовать это вместо ваших ясных всех функций

$scope.clearAll = function() { 
    angular.forEach($scope.deliveryMethods, function(checkbox_id) { 
    checkbox_id.selected = false; 
    if (checkbox_id.id == 1) { 
     checkbox_id.selected = true; 
    } 
    }); 
} 
Смежные вопросы