如何在angular.js中为http控制器添加范围?

时间:2015-02-05 16:11:46

标签: javascript json angularjs

我还希望能够访问此控制器中的$ scope,这样我就可以在我的html中执行ng-click和ng-change等方法。我知道有这个$ http但是我不能对它做一个角度函数,我似乎无法弄清楚如何在这个控制器中使用$ scope。

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++;
      };

3 个答案:

答案 0 :(得分:2)

您需要像这样注入范围依赖:

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

答案 1 :(得分:1)

将控制器定义更改为:

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

与将$ http注入控制器的方式相同,您需要对$ scope执行相同操作以允许控制器使用它。

查找依赖注入,你会发现各种各样的东西。它非常有用,如果你要使用Angular,你会想知道它是如何工作的。

答案 2 :(得分: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 ="更改()"