Ich habe eine Reihe von Radiobuttons und eine Reihe von Kontrollkästchen. Wenn ich auf radiobutton1 klicke, sollte es das erste Checkbox-Element aus dem Array laden und wenn ich auf radiobutton2 klicke, sollte es die restlichen 3 Checkbox-Elemente aus dem Array laden. Aber es zeigt alle 4 Checkboxen in beiden Fällen. Ich habe es so versucht.Kontrollkästchen Elemente eines Arrays von Kontrollkästchen anzeigen
In HTML
<form>
<label class="radio-inline" >
<input value="1" type="radio" ng-model="radioption" >RB1</label>
<label class="radio-inline">
<input value="2" type="radio" ng-model="radioption" >RB2</label>
<div class="">
<label ng-repeat="channel in channels | filter:myFilter" >
<input type="checkbox" name="selectedChannels[]" value="{{channel.value}}"
ng-model="channel.selected" >{{channel.name}}
</label></div>
</form>
Kontroller
App.controller('ReportController', ['$scope', 'Report', function($scope, Report){
var self = this;
$scope.channels = [{ name: 'A', selected: false, value: '1',visible:false },
{ name: 'B', selected: false, value: '2' ,visible:false},
{ name: 'C', selected: false, value: '3' ,visible:false},
{ name: 'D', selected: false, value: '4' ,visible:false}
];
$scope.selection = [];
$scope.selectedChannels = function selectedChannels() {
return Report($scope.channels, { selected: true });
};
$scope.$watch('channels|filter:{selected:true}', function (new) {
$scope.selection = new.map(function (channel) {
return channel.value;
});
}, true);
$scope.myFilter = function(){
if ($scope.radioption == '1'){
return $scope.channels[0].visible = true;
}
else if ($scope.radioption == '2'){
return [$scope.channels[1],{ visible: true },
$scope.channels[2],{ visible: true },
$scope.channels[3],{ visible: true }];
}
});
}]);
Warum verwenden Sie Filter und nicht die Anweisungen ng-show oder ng-hide? – karman
Für normale Checkboxen weiß ich wie man ng-show benutzt. Für Array weiß ich nicht, wie man es benutzt. Ich bin neu bei angularjs. – user3844782