gpt4 book ai didi

angularjs - 选择复选框时使用 ng-model 创建数组

转载 作者:行者123 更新时间:2023-12-03 06:25:48 25 4
gpt4 key购买 nike

我是 angularjs 新手,想在单击复选框时创建模型数组,下面是我的代码..

$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>

当我单击复选框时,上面的代码会更新播放列表,如下所示

{
"http://test/test1.mp3": true,
"http://test/test2.mp32": true,
"http://test/test3.mp3": false
}

但是我想以下面的格式创建 ng-model,并在取消选中该复选框时删除该对象(例如,如果取消选中 Song3,则将从数组中删除 Song3 对象)。你能告诉我这个逻辑怎么写吗?

预期:

[{
name: "song1",
url: "http://test/song1.mp3"
}, {
name: "song2",
url: "http://test/song2.mp3"
}]

最佳答案

你可以这样做:

$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});
}

然后,当选择更改时简单地调用 selectedSongs() :

<input type="checkbox" name="{{song.url}}" id="{{song.name}}" ng-model="song.checked" ng-change="selectedSongs()">

查看演示 here

关于angularjs - 选择复选框时使用 ng-model 创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17951756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com