[英]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.