2015-04-18 9 views
4

Привет У меня есть простой контроллер, где он передает уникальные целые числа в мой url, но Im работает со многими проблемами. Мне нужно изменить этот «4401» динамически с моего контроллера.

URL, Im пытается достичь: 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); 
    } 
}); 

Ошибка Im получение неперехваченным 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> 

ответ

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

Кроме того, следует отметить, что вызов метода ресурса будет возвращать обещание. Вы можете либо установить его из возвращаемого значения метода get, как вы это делали выше (статус обещания не гарантируется), либо вы можете установить его в обратном вызове, что гарантирует, что обещание будет разрешено.

+0

ну, похоже, не нравится, когда я называю как классические, так и боевые фильмы Я получаю то же самое – user1429595

+0

Какой URL-адрес генерируется как для классических, так и для боевика? –

+0

https://itunes.apple.com/us/rss/topmovies/limit=50/genre=/json – user1429595

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); 
+0

он не сделал этого, он называет https://itunes.apple.com/us/rss/topmovies/limit=50/genre=/json – user1429595

Смежные вопросы