2015-05-15 51 views
2

我試圖動態填充一些複選框並使用選定的項目來過濾數據。複選框ng-click發射兩次

我的HTML

<div class="form-group" ng-repeat="category in categories"> 
    <label class="checkbox" > 
    <input type="checkbox" ng-model="selection.ids[category.code]" id="{{category.code}}" 
      ng-click="toggleSelection(category)" 
      /> 
    {{category.description}} 
    </label> 
</div> 
<div class="form-group"> 
    <button type="submit" ng-click="filterSubmit();" class="btn btn-default"> 
    <span class="glyphicon glyphicon-search"></span> Filter 
    </button> 
</div> 

在我的控制,我使用這個JavaScript,而不是與大多數其他的例子我見過。

$scope.toggleSelection = function (category) { 
    var idx = $scope.selection.indexOf(category); 
    console.log('start '+ idx); 

    // is currently selected 
    if (idx > -1) { 
    $scope.selection.splice(idx, 1); 
    } 
    // is newly selected 
    else { 
    $scope.selection.push(category); 
    } 
}; 

可悲的是我看到控制檯-1,0 所以我最終沒有選擇複選框登錄兩次,一次,一次。

當我使用grunt構建應用程序並將其放置在網絡服務器上時,它可以正常工作,但是當我使用grunt服務器運行它時,它會不斷調用控制器兩次。

+1

它有助於使用ng-change而不是ng-click嗎? – ABOS

+0

沒有足夠的信息來複制這個問題,你發佈的代碼是罰款:http://plnkr.co/edit/9WT5Q1MIAgLnn8AxWJqS?p=preview – dfsq

+0

嗨@abos,雖然我不明白爲什麼......確實有幫助...? – bond708

回答

0

感謝Brian,確實Grunt在不同的環境下設置不同。 問題解決了。

+0

你會不會介意改寫這個,讓它聽起來更像是一個答案,而不是回答答案,並且更加獨立?評論是暫時的,所以如果你正在回覆的人被刪除,這隻會看起來很奇怪。有些人有點觸發快樂,所以如果看起來不像是答案,你可能會得到一些提示或刪除。 – Dukeling