javascript – Angular JS,如何在angularJS中将URL参数传递给$resouce?

嗨,我有一个简单的控制器,它将唯一的整数传递到我的网址,但我遇到了很多问题.我需要从我的控制器动态更改“4401”.

我试图达到的网址:
https://itunes.apple.com/us/rss/topmovies/limit=50/genre=4401/json

app.factory('classic',function ($resource) {

    return $resource('https://itunes.apple.com/us/rss/topmovies/limit=50/genre=:id/json', {
        get: {
            method: 'JSONP',
            id: '@id'
        }
    });

});

这是我的控制器

app.controller('TestCrtl', function ($scope, classic) {
    init();
    function init(id) {
        $scope.movies = classic.get(id);
    }
    $scope.classicMovies = function(){
        var id = "4403";
        init(id);
    }


    $scope.anctionMovies = function(){
        var id = "4404";
        init(id);
    }
});

我得到的错误
未捕获的SyntaxError:意外的令牌:

任何帮助将受到高度赞赏.

 <div class="col-sm-4">
            <button type="button" data-ng-click="actionMovies()" class="btn btn-default">Action</button>
        </div>
        <div class="col-sm-4">
            <button type="button" class="btn btn-default">Scary</button>
        </div>

最佳答案 我相信这是在使用资源工厂时实现参数的正确方法:

app.factory('movieService',function ($resource) {
    return $resource('https://itunes.apple.com/us/rss/topmovies/limit=50/genre=:id/json', {id: '@id'}, {
        query: { method: 'GET', isArray:true, params: {id: '@id'} }
    });
});

这可以简化为:

app.factory('movieService',function ($resource) {
    return $resource('https://itunes.apple.com/us/rss/topmovies/limit=50/genre=:id/json', {id: '@id'});
});

要调用此get方法,您需要执行以下操作.请注意get方法中使用的参数.

app.controller('TestCrtl', function ($scope, movieService) {

    $scope.classicMovies = function(){
        movieService.query({id: 4403}, function(result){
            $scope.movies = result;
        });
    }
    $scope.anctionMovies = function(){
        movieService.query({id: 4404}, function(result){
            $scope.movies = result;
        });
    }
});

另外,应该注意资源方法调用将返回一个promise.你可以从get方法的返回值设置它,就像你上面所做的那样(无法保证promise的状态),或者你可以在回调中设置它,这可以保证promise得到解决.

点赞