我是angularJS的新手,以下代码存在一些问题。基本上,我想要实现的是在Spotify API中搜索一个词并检索给我的第一个播放列表,然后获取播放列表的URI并将其连接到要在页面中显示的嵌入URL。
我似乎无法以字符串格式将$ scope.spotifySearch对象放入$ scope.playlisturi范围。任何帮助,将不胜感激。
app.controller('MainCtrl', function ($scope, $sce, Spotify) {
$scope.spotifySearch = Spotify.search('Top 40', 'playlist').then(function (data) {
return (data.playlists.items[0].uri);
});
$scope.trustSrc = function(src) {
return $sce.trustAsResourceUrl(src);
}
$scope.playlisturlfragment = "https://embed.spotify.com/?uri=";
$scope.playlisturi = $scope.spotifySearch;
$scope.playlisturl = {src:$scope.playlisturlfragment+$scope.playlisturi}
});
最佳答案
您正在为spotifySearch
分配一个承诺,我想您想要的是搜索返回的uri
。
基本上有两种方法可以解决此问题。
兑现承诺后,将值分配给playlisturl
。
更改playlisturl
时,将值分配给spotifySearch
。
这是第一种方法。
$scope.playlisturlfragment = "https://embed.spotify.com/?uri=";
Spotify.search('Top 40', 'playlist').then(function (data) {
$scope.playlisturl = {src:$scope.playlisturlfragment+data.playlists.items[0].uri}
});
另一种方法是监视
spotifySearch
的更改。 $scope.playlisturlfragment = "https://embed.spotify.com/?uri=";
Spotify.search('Top 40', 'playlist').then(function (data) {
$scope.spotifySearch = data.playlists.items[0].uri;
});
$scope.$watch('spotifySearch',function(value) {
if(!value) return;
$scope.playlisturl = {src:$scope.playlisturlfragment+value};
});