2015-02-05 37 views
0

我也想在這個控制器中訪問$ scope,所以我可以在我的html中執行像ng-click和ng-change這樣的方法。我知道有這個$ http,但我不能做anny角功能,我似乎無法弄清楚如何在這個控制器中使用$範圍。如何添加範圍到angular.js中的http控制器?

app.controller('songController', ['$http', function($http) { 

    $songs = this; 
    $songs.tracks = []; 

    $http({ 
      url: "http://api.q-music.be/1.2/tracks/plays?limit=20", 
      dataType: "jsonp", 
      jsonp: "callback" 
     }) 
     .success(function(lastSongsList) { 
      $songs.tracks = lastSongsList.played_tracks; 
      console.log($songs.tracks); 

     }); 


}]); 

我希望能夠做到的方法在該控制器是這樣的:

$scope.change = function() { 
     $scope.counter++; 
     }; 

回答

0
$songs = this; 
$songs.tracks = []; 

也應該

$scope.songs = this; 
$scope.songs.tracks = []; 

同爲$ HTTP成功處理程序

$songs.tracks = lastSongsList.played_tracks; 

應該

$scope.songs.tracks = lastSongsList.played_tracks; 

你改變功能可以留在控制器

$scope.change = function() { 
     $scope.counter++; 
     }; 

然後在你的html中,例如按鈕輸入使用ng-click =「change()」

2

你需要注入你的範圍依賴這樣的:

app.controller('songController', ['$http', '$scope', function($http, $scope) { 
1

控制器定義修改爲這個:

app.controller('songController', ['$http', '$scope', function($http, $scope) { 

與將$ http注入到控制器中的方式相同,您需要對$ scope做同樣的處理,以便控制器可以使用它。

查找依賴注入,你會發現各種各樣的東西。這非常有用,如果您要使用Angular,您需要了解它的工作原理。