您好我有一个简单的控制器,它将唯一的整数传递到我的网址,但我遇到了很多问题。我需要改变这个" 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>
答案 0 :(得分:1)
试试这个:
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);
答案 1 :(得分:1)
我相信这是在使用资源工厂时实现参数的正确方法:
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方法的返回值设置它,就像您上面所做的那样(保证的状态不是保证),或者您可以在回调中设置它,这可以保证解析承诺。 / p>