AngularJS передать значение в API запроса

0

У меня есть значения ID, которые я хочу добавить к URL-адресу для запроса правильного объекта в API

HTML:

<div ng-init="tileID = '38'"></div>

контроллер:

app.controller('appCtrl',['$scope', '$http', 'ImageTiles', function($scope, $http, ImageTiles){

$scope.$watch('tileID', function(){
  console.log($scope.tileID);
  $scope.get = function(tileID){
    ImageTiles.get({id: tileID}, function(data){
    })
  }
});
}]);

завод

app.factory('ImageTiles', ['$resource', function ($resource) {
  return $resource('http://api/v1/tiles/:id', {
  id: "@id"
},
{
'query': {
  method: 'GET',
  isArray: false
}
});
}]);

Пример:

В HTML у меня есть значение 38, которое всегда вводится вручную. Хотелось бы принять это значение (38) и создать URL-адрес http://api/v1/tiles/38 чтобы вернуть данные объекта, который имеет идентификатор 38 в API.

Я могу получить значение ID, но не знаю, как передать его и сделать вызов API.

4 ответа

0
Лучший ответ

Там действительно не нужно играть с вашим $ ресурсом, прежде чем потреблять его, обернув его в эту функцию get, просто позвоните прямо:

app.controller('appCtrl',['$scope', '$http', 'ImageTiles', function($scope, $http, ImageTiles){

$scope.$watch('tileID', function(){
   console.log($scope.tileID);
   ImageTiles.get({id: $scope.tileID}).$promise.then(function(tile) {
      $scope.tile = tile;
    });


});
}]);
  • 0
    Это именно то, что я искал, большое спасибо :). Был долгий вечер и просто не мог придумать, как принять это значение и передать его.
0

Это похоже только на базовый скелет для Angular Application. Чтобы обеспечить реальный механизм маршрутизации, вам нужно изменить файл app.js для настройки различных маршрутов.

см. ниже пример кода:

config(['$routeProvider', function($routeProvider) {
  $routeProvider.
    when("/Apps", {templateUrl: "partials/App.html", controller: "driversController"}).
    when("/App/:id", {templateUrl: "partials/App.html", controller: "appCtrl"}).
    otherwise({redirectTo: '/App'});
}]);
  • 0
    Спасибо за ответ, это был просто вопрос обращения к API с правильным URL-запросом и возврата объекта.
0

В ваших часах вы можете указать аргументы newValue и oldValue и использовать newValue для вызова вашего API.

app.controller('appCtrl',['$scope', '$http', 'ImageTiles', function($scope, $http, ImageTiles){

    $scope.$watch('tileID', function(newValue, oldValue){
        console.log(newValue);            
        ImageTiles.get({id: newValue}, function(data){
            console.log(data);
        });

    });
}]);
0

я выгляжу как

 // Get 
$http.get("http://api/v1/tiles/"+ tileID)
.success(function (response) {
   // Do somthing
});

Надеюсь, это поможет вам

  • 0
    Проблема в том, что я должен передать значение на фабрику.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню