Javascript 在AngularJS中预选一个“未知”选项
我试图在选择下拉列表中预先选择一个选项,如果选项的值是静态的,我知道怎么做。但如果它们是动态变化的呢?在我的例子中,我得到了一个更新很多的相册列表,所以我永远不知道这些选项的价值。我尝试使用ng init选择列表中的第一张专辑,如下所示:Javascript 在AngularJS中预选一个“未知”选项,javascript,angularjs,select,option,Javascript,Angularjs,Select,Option,我试图在选择下拉列表中预先选择一个选项,如果选项的值是静态的,我知道怎么做。但如果它们是动态变化的呢?在我的例子中,我得到了一个更新很多的相册列表,所以我永远不知道这些选项的价值。我尝试使用ng init选择列表中的第一张专辑,如下所示: <select class="rounded bold" ng-model="selectedAlbum" ng-init="selectedAlbum='album[0].albumName'"> <option ng-repeat
<select class="rounded bold" ng-model="selectedAlbum" ng-init="selectedAlbum='album[0].albumName'">
<option ng-repeat="album in albumsList" value="{{album.albumName}}" ng-bind="album.albumName">
</select>
但是运气不好,从我的搜索中,我真的找不到任何答案。它可能是ng选项,但从我所看到的来看,它不会生成带有绑定的选项。就像我在上面的代码中所做的那样
如何实现这一点?在控制器中,只需将所选的LBUM模型更改为所需的值即可
$scope.selectedAlbum = albumsList[0].albumName
使用ng options指令生成您的列表,并包含一个空值的选项:
<select class="rounded bold"
ng-model="selectedAlbum"
ng-options="album.albumName for album in albumsList">
<option value="">-- choose album--</option>
</select>
请参阅如果唱片列表发生更改,则所选唱片型号可能与任何唱片名称都不匹配。在这种情况下,selectedAlbum将保持其先前的值,angular将向Selected添加一个未知选项。正如我理解你的问题,在这种情况下,你想在新专辑列表中的第一个项目被选中,顺便说一句,我认为这是一个合理的行动。
为了实现这一点,您可以查看albumList并根据new albumList检查selectedAlbum是否有效。如果没有,您可以将其更改为第一项:
$scope.$watch("alubmList", function(newAlbumList){
if(angular.isArray(newAlbumList) && newAlbumList.length){
var albumNames = newAlbumList.map(function(album){
return album.name;
});
if(albumNames.indexOf($scope.selectedAlbum)<0)
scope.selectedAlbum = newAlbumList[0].name;
}
});
旁注:
您可以使用ng选项重写html:
<select class="rounded bold" ng-options="album.albumName for album in albumsList"></select>
您只需使用旧的JavaScript即可:
var elementid=document.getElementById("elementid");
var unknown_option=elementid.options[1].value;
elementid.value=unknown_option;
//选项[1]选择第一个选项,如果选择2,则选择第二个选项。。等
但当然,如果你想要最后一个选项,你必须使用长度函数,然后循环或直接反向索引:使用ng选项,然后设置模型,让你知道。在ng init指令中,您引用了错误的变量。它必须是相册列表[0]instead@tymeJV知道为什么相册列表中相册的:ng options=opt as opt.albumName不起作用吗?@Chrillewoodz,因为您可以交替使用opt和album。您需要选择作为opt.albumName用于选择加入albumList,或者选择作为album.albumName用于选择加入albumList中的album;但是,这与不包括opt as是一样的。。。因为您只是将其设置为完整对象。例如,如果需要,您可以使用opt.id作为opt.albumName作为opt-inalbumList@Tom不幸的是,这两者都不起作用。。它必须是album asalbum.albumName,因为我在原始代码中使用album.albumName作为绑定,对吗?