8

Ich habe ein 10 (oder n) Kontrollkästchen in meiner NG-Ansicht. Nun möchte ich hier fragen, dass Was ist die effizienteste oder einfachste Möglichkeit zu überprüfen, ob das Kontrollkästchen aktiviert ist und wenn aktiviert, erhalten Sie den Wert des Kontrollkästchens.Wie bekomme ich checkbox-Wert in angularjs?

<ul> 
 
    <li ng-repeat="album in albums"> 
 
    <input type="checkbox" ng-model="folder.Selected" value={{album.name}} /> 
 
    </li> 
 
    </ul>

Ich habe ng-Controller (getAlbumsCtrl), dass ich habe ein Array, in dem ich alle checkedbox Alben Namen in albumNameArray

Antwort

18

Sie können eine Schleife über das Array hinzuzufügen.

<ul> 
    <li ng-repeat="album in albums"> 
    <input type="checkbox" ng-model="album.selected" value={{album.name}} /> 
    </li> 
</ul> 

$scope.save = function(){ 
    $scope.albumNameArray = []; 
    angular.forEach($scope.albums, function(album){ 
    if (!!album.selected) $scope.albumNameArray.push(album.name); 
    }) 
} 

// alternatively you can use Array.prototype.filter on newer browsers (IE 9+) 
$scope.save = function(){ 
    $scope.albumNameArray = $scope.albums.filter(function(album){ 
    return album.selected; 
    }); 
} 

jsbin

+0

Ich denke, wenn (!! album.selected) sollte einfach sein 'if (album.selected) { $ scope.albumNameArray.push (Albumname); ' } Aber wenn ich das tue .. Ich bekomme (album.selected) = undefiniert. Aber nur für die Überprüfung Zweck ich Wert = {{album.selected}} war es wahr..aber wenn im Controller gibt es mir undefined Fehler .. –

+0

Das ist, was ich tue JavaScript: - angular.forEach ($ scope.albums, Funktion (Album) { if (album.selected) { $ scope.albumNames.push (album.name); } }); HTML: - Ich erhalte album.selected = undefiniert –

+0

Entschuldigung, ich habe den Wert der Checkbox nicht gesehen. Normalerweise verwende ich keinen Wert, wenn ich die Checkbox verwende, nur mit ng-Modell. Wenn sich der Wert auf das Modell auswirkt, können Sie überprüfen, ob das Modell bereits der Name selbst ist und nicht das Objekt? – Icycool

1

Have drücken möchten ein Blick auf diese fiddle, ich habe das Objekt verwendet, dessen Schlüssel ist der Name des Albums

<input type="checkbox" ng-model="folder[album.name]" value={{album.name}}/>

Controller:

function ctrl($scope){ 
$scope.albums = [{name:'a1'},{name:'a2'},{name:'a3'}]; 
$scope.folder = {}; 
$scope.albumNameArray = []; 
$scope.getAllSelected = function(){   
    angular.forEach($scope.folder,function(key,value){ 
     if(key) 
      $scope.albumNameArray.push(value) 
    }); 
}} 
+0

hallo @praveen können Sie diese Frage beantworten http://stackoverflow.com/questions/42689519/x-editable-checkbox-in-meanstack-angularjs – jose

1

Sie einfach Winkelfilter hier verwenden könnte, auch sollten Sie Ihre ng-modelalbum.Selected sein statt folder.Selected

Html

{{(albums | filter : { Selected: true }: true)}} 

-Controller

$scope.albumNameArray = $filter('filter')($scope.albums, { Selected: true }, true); 

Bevor es in Controller nicht vergessen $filter in Ihrem Controller, welche und in den Namen Array schieben ausgewählt wird, um herauszufinden,

+0

für mich imp ... $ scope.save = function() {} $ scope.read = function() {} nehme ich Funktion von read..because speichern anrufen will, wenn ich ich tue sparen get() nicht definiert .. Ich mache auf diese Weise $ scope.read = function() { save(); } –

+1

@Chetan als beide Methode im Bereich sollte dann '$ scope.read = function() {$ scope.save(); } ' –

+0

@Pankaj ... yeah right ... danke –

0

Wenn Sie wollen, dass der Wert gedruckt werden.
können Sie mögen verwenden:

input type="checkbox" ng-model="checkboxModel.value2" ng-true-value="'YES'" ng-false-value="'NO'"