2016-04-11 14 views
2

これは単純な問題のように思えますが、私は何か小さいものを見落とさなければなりません。

私はSpotify APIにアクセスしてアーティストを検索する機能を持っています。私は、通常のURLでこのルートにアクセスすると結果が返ってくることを知っています。 (例えばhttp://localhost:3001/search?artist=%27Linkin%20Park%27)ここでそれを行うコード:

router.get('/search', function(req, res, next) 
{ 
    var artist = req.param('artist'); 
    console.log("Artist: " + artist); 
    smartSpot.getArtistID(artist, function(data) 
    { 
     console.log("Data: " + data); 
     res.json(data.id); 
    }); 
}); 

そして、アーティストを検索するためのフロントエンド上のコードがあります。これはすべて角度で行われます。

angular.module('smart-spot', []) 
    .controller('MainCtrl', [ 
     '$scope', '$http', 
     function($scope, $http) 
     { 
      $scope.createPlaylist = function() 
      { 
       var artist = $scope.artist; 
       console.log(artist); 
       window.open("/login", "Playlist Creation", 'WIDTH=400, HEIGHT=500'); 
       return $http.get('/search?=' + $scope.artist) //this doesn't pass in the artist 
        .success(function(data) 
        { 
         console.log(data); 
        }); 

      } 
     } 
    ]); 

$http.get()は、$ scope.artist`値に正しく渡されません。

答えて

5

文字列の連結で「アーティスト」クエリパラメータが不足しているようです。

$http.get('/search?artist=' + $scope.artist) 

また、アーティストをクエリパラメータとして渡すこともできます。

function createPlaylist() { 
    return $http.get('/search', { params : { artist : $scope.artist } }) 
    .then(function(response) { 
     return response; 
    }, function(error) { 
     return $q.reject(error); 
    }); 
} 

また、私は.successを使用しないでください。私はそれが上記の構文に賛成して減価償却されたと信じています。最初のパラメータは成功関数、2つ目は失敗関数です。

+0

ああ経由でパラメータを渡すことができます。ダー。うん。私はそれが何か簡単だと分かっていました。本当にありがとう!なぜこれが機能していないのかわかりませんでした。 –

+0

'$ q.reject(エラー);とは何ですか? –

+1

$ qは、約束事を管理する角度サービスです。 $ scope.createPlaylistの呼び出しの後に何かしたいのであれば、error関数から$ q.reject()を返すといいでしょう。それが「約束」を作り出す方法です。それで$ scope.createPlaylist()を呼び出すことができます(function(response){}、function(error){})。したがって、createPlaylistが成功すると、チェーン内の次の関数が実行されます。 createPlaylistsが失敗すると、チェーン内の次の失敗関数が実行されます。 – Albtzrly

2

あなたは

$http.get('/search', { 
    params: { 
     artist: $scope.artist 
    } 
}) 
.success(function(data) 
{ 
console.log(data); 
}); 
関連する問題