2016-08-29 4 views
0

Мне нужно передать значение из поля ввода в представлении с помощью службы. Служба должна позвонить мне WebAPI2, а затем в качестве ответа получит действительный JSON.AngularJS: API вызова службы и возврат JSON

Однако, я либо получаю объект обещания, который я не могу решить (даже с «.then()»), или если я использую фабрику, он не будет компилироваться, поскольку он не реализует метод $get.

JSON Объект, который я возвращаю, также действителен.

Вид:

<div class="input" ng-controller="InputController as ctrl"> 
<input ng-model="inputdata" /> {{inputdata}} 
    <button ng-click="ctrl.gibDaten(inputdata)">Senden</button> 
    {{cooledaten}} 
</div> 

Контроллер:

module GoogleMapsApp { 
myApp.myAppModule.controller("InputController", 
    ["$scope", "mapsServiceCustom", 
     function ($scope, mapsServiceCustom) { 
      $scope.lEingabedaten = $scope.inputdata; 
      this.gibDaten = function() { 
       $scope.cooledaten = mapsServiceCustom.gibDaten().then(); 
       console.log($scope.cooledaten); 
      } 
}]); 

}

Услуги:

module GoogleMapsApp { 
myApp.myAppModule.service("mapsServiceCustom", 
    ["$http", 
     function ($http) { 
      this.gibDaten = function (lEingabe) { 
       console.log(lEingabe); 
       console.log($http.get("api/getDistanceData/" + lEingabe + "/Cologne") 
        .then(function(data) { 
         return data; 

Контроллер:})); return $ http.get ("api/getDistanceData /" + lEingabe + "/ Cologne") .then (функция (данные) { данные возврата; }); // возвращаем $ http.get ("api/getDistanceData /" + lEingabedaten1 + "/ Cologne); } } ]);

}

консоли журнала:

Object { $$state: Object }maps.serviceCustom.js:14:17

Object { $$state: Object }InputController.js:8:17

Если я проверяю $$ состояние: Object содержит точно нужные данные.

Использование фабрики приводит меня к следующей ошибке:

https://docs.angularjs.org/error/$injector/undef?p0=mapsServiceCustom

Так что я делаю неправильно? Как я буду реализовывать свои намерения?

ответ

0

Вам необходимо пройти функцию тогда часть ... Так просто положить затем функцию в контроллере и установить возвращение ответа на переменную ...

myApp.myAppModule.controller("InputController", 
    ["$scope", "mapsServiceCustom", 
     function ($scope, mapsServiceCustom) { 
      $scope.lEingabedaten = $scope.inputdata; 
      this.gibDaten = function() { 
       mapsServiceCustom.gibDaten().then(function(response){ 
        // set response to your variable 
        $scope.cooledaten = response; 
       }); 
      } 

}]); 
0

Вы не реализовали сервис должным образом. пожалуйста, перейдите по следующей ссылке (Angularjs официальной документации) https://docs.angularjs.org/guide/services

Вы должны выставить свой API, возвращая его объект JS. (То же самое показано в вашей ссылке ошибка. Пожалуйста, обратитесь к тому, что а)

module GoogleMapsApp { 
myApp.myAppModule.service("mapsServiceCustom", 
    ["$http", function ($http) { 
      this.gibDaten = function (lEingabe) { 
       console.log(lEingabe); 
       console.log($http.get("api/getDistanceData/" + lEingabe + "/Cologne") 
        .then(function(data) { 
         return data; 
        } 
      } 

      return { gibDaten: this.gibDaten}; 
    }]); 
} 

Здесь Вы можете узнать больше на $ получить метод https://docs.angularjs.org/guide/providers

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