2017-07-06 72 views
0

之後再單擊MD-複選框我有幾個複選框:無法提交按鈕

<md-checkbox ng-model="b.user[0]" class="md-primary md-hue-2" ng-checked="selected.indexOf(user[0]) > -1" ng-click="selection(user[0])" class="md-primary md-hue-2" ng-true-value="'Checkbox 1'" ng-false-value="null">Checkbox 1</md-checkbox> 

<md-checkbox ng-model="b.user[1]" class="md-primary md-hue-2" ng-checked="selected.indexOf(user[1]) > -1" ng-click="selection(user[1])" class="md-primary md-hue-2" ng-true-value="'Checkbox 2'" ng-false-value="null">Checkbox 2</md-checkbox> 

<md-checkbox ng-model="b.user[2]" class="md-primary md-hue-2" ng-checked="selected.indexOf(user[2]) > -1" ng-click="selection(user[2])" class="md-primary md-hue-2" ng-true-value="'Checkbox 3'" ng-false-value="null">Checkbox 3</md-checkbox> 

<md-checkbox ng-model="b.user[3]" class="md-primary md-hue-2" ng-checked="selected.indexOf(user[3]) > -1" ng-click="selection(user[3])" class="md-primary md-hue-2" ng-true-value="'Checkbox 4'" ng-false-value="null">Checkbox 4</md-checkbox> 

<button type="submit" ng-click="submit()">SUBMIT</button> 

我加入這些複選框的值在數組中。我的指令代碼是:

scope.user = ['Checkbox 1','Checkbox 2','Checkbox 3','Checkbox 4']; 
scope.selected = []; 
scope.toggleSelection = function (value) { 
    var idx = scope.selected.indexOf(value); 
    if (idx > -1) { 
     scope.selected.splice(idx, 1); 
    } 
    else { 
     scope.selected.push(value); 
    } 
};  
scope.submit = function() { 
    scope.b.user = scope.selected; 
}; 

但我在數組中獲得重複值。示例:當我單擊複選框1和複選框2並提交數組時,包含:['複選框1','複選框2']。但在此之後,檢查標記突然消失,當我再次嘗試點擊它們時,只有連鎖反應,但沒有檢查標記。當我重新點擊相同的複選框時,數組也可以有重複的值。任何人都可以幫我解決這個問題嗎?

+0

您是否獲得在您的瀏覽器控制檯錯誤? – Matt

+0

nope,我沒有在控制檯中得到任何類型的錯誤 –

回答

1

@shreyagupta,請找到您的修改後的代碼。導致問題的邏輯錯誤很少。 控制器代碼:

$scope.user = ['Checkbox 1','Checkbox 2','Checkbox 3','Checkbox 4']; 
$scope.selected = ['Checkbox 1']; 
$scope.toggleSelection = function (value) { 
    var idx = $scope.selected.indexOf(value); 
    if (idx > -1) { 
     $scope.selected.splice(idx, 1); 
    } 
    else { 
     $scope.selected.push(value); 
    } 
};  
$scope.submit = function() { 
    $scope.b.user = $scope.selected; 
    console.log($scope.b.user); 
}; 

和HTML代碼:

<md-checkbox ng-model="b.user[0]" class="md-primary md-hue-2" ng-checked="selected.indexOf(user[0]) > -1" ng-click="toggleSelection(user[0])" class="md-primary md-hue-2" ng-true-value="'Checkbox 1'" ng-false-value="null">Checkbox 1</md-checkbox> 

<md-checkbox ng-model="b.user[1]" class="md-primary md-hue-2" ng-checked="selected.indexOf(user[1]) > -1" ng-click="toggleSelection(user[1])" class="md-primary md-hue-2" ng-true-value="'Checkbox 2'" ng-false-value="null">Checkbox 2</md-checkbox> 

<md-checkbox ng-model="b.user[2]" class="md-primary md-hue-2" ng-checked="selected.indexOf(user[2]) > -1" ng-click="toggleSelection(user[2])" class="md-primary md-hue-2" ng-true-value="'Checkbox 3'" ng-false-value="null">Checkbox 3</md-checkbox> 

<md-checkbox ng-model="b.user[3]" class="md-primary md-hue-2" ng-checked="selected.indexOf(user[3]) > -1" ng-click="toggleSelection(user[3])" class="md-primary md-hue-2" ng-true-value="'Checkbox 4'" ng-false-value="null">Checkbox 4</md-checkbox> 

<button type="submit" ng-click="submit()">SUBMIT</button>