Je suis nouveau sur angularjs et je souhaite créer le tableau de modèles lorsque je clique sur la case à cocher et que mon code est en dessous.
$scope.selectedAlbumSongs = [{
'name': 'song1',
'url': 'http://test/song1.mp3'
}, {
'name': 'song2',
'url': 'http://test/song2.mp3'
}, {
'name': 'song3',
'url': 'http://test/song3.mp3'
}];
$scope.playList = {};
HTML:
<fieldset data-role="controlgroup">
<legend>Select songs to play</legend>
<label ng-repeat="song in selectedAlbumSongs">
<input type="checkbox" name="{{song.url}}" id="{{song.name}}" ng-model="playList[song.url]">
<label for="{{song.name}}">{{song.name}}</label>
</label>
</fieldset>
Le code ci-dessus met à jour la liste de lecture comme indiqué ci-dessous lorsque je clique sur la case à cocher
{
"http://test/test1.mp3": true,
"http://test/test2.mp32": true,
"http://test/test3.mp3": false
}
Mais je veux créer le modèle ng dans le format ci-dessous et supprimer l'objet lorsque la case n'est pas cochée (par exemple, si vous décochez la chanson3, l'objet song3 supprimé du tableau). Pouvez-vous me dire comment écrire cette logique?
Attendu:
[{
name: "song1",
url: "http://test/song1.mp3"
}, {
name: "song2",
url: "http://test/song2.mp3"
}]
Vous pouvez le faire comme ceci:
$scope.selectedAlbumSongs = [ { 'name': 'song1', 'url': 'http://test/song1.mp3' }, { 'name': 'song2', 'url': 'http://test/song2.mp3' }, {'name': 'song3', 'url': 'http://test/song3.mp3' }];
$scope.selectedSongs = function () {
$scope.playList = $filter('filter')($scope.selectedAlbumSongs, {checked: true});
}
Ensuite, appelez simplement selectedSongs () lorsque la sélection est modifiée:
<input type="checkbox" name="{{song.url}}" id="{{song.name}}" ng-model="song.checked" ng-change="selectedSongs()">
Voir la démo ici