我是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};
 });

08-08 05:08