簡體   English   中英

Angular JS,如何將URL參數傳遞給angularJS中的$ resouce?

[英]Angular JS, how to pass URL parameters to $resouce in angularJS?

嗨,我有一個簡單的控制器,它將唯一的整數傳遞到我的網址,但我遇到了很多問題。 我需要從我的控制器動態更改“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);
    }
});

錯誤我得到Uncaught 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('classic',function ($resource) {

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

});

並在控制器中更改為:

$scope.movies = classic.get(id);

我相信這是在使用資源工廠時實現參數的正確方法:

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得到解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM