0

Ich habe versucht, den Code in meiner Anwendung zu verbessern, indem den RESTful Anruf in meinem AngularJS zu einer Fabrik bewegen wie so:

In app.js

var myApp = angular.module('myApp', ['ngRoute','ngResource']); 

In services.js

swof.factory('engineerService', function($resource) 
{ 
    var data = $resource('/api/engineers/:empid',{empid: "@empid"}, 
      { 
      'get': 
      { method:'GET'}, 
      'save': 
      {method:'POST'}, 
      'query': 
      {method:'GET', 
      transformResponse: function(data) 
      { 
      return angular.fromJson(data); 
      }, 
      isArray:true}, 
      'remove': 
      {method:'DELETE'}, 
      'delete': 
      {method:'DELETE'} 
     }); 
    return data; 
}); 

In controller.js

engineerService.query().$promise.then(function(data) 
{ 
    $scope.engineers = data; 
    typeof $scope.engineers; 
    console.log("[in]", $scope.engineers); 
    $scope.$apply; 
}); 
console.log("[out]", $scope.engineers); 

Der Controller wird in der Seite engineer.html referenziert. Die Idee ist, dass eine Liste von Ingenieuren aus $ scope.engineer angezeigt wird.

Die Ausgabe in der Chrome-Konsole wie folgt:

Output in Chrome console

Aus irgendeinem Grund, den ich nicht in der Lage bin, um die Daten zu erhalten von der REST-Abfrage zurückgegeben außerhalb des Abschnitts des Controllers mit dem $ erscheinen versprechen.

Kann mir bitte jemand dabei helfen?

+0

danke für die Hervorhebung dieser zu mir. Die Information in der verwandten Frage ist nützlich, löst aber nicht mein Problem, da es nicht genau dasselbe ist, nämlich - Ich benutze $ resource und die vorgeschlagene Lösung, indem ich die Variable auf false setze, funktioniert zunächst nicht in dem von mir beschriebenen Szenario. Können Sie bitte Ihre Einschätzung überdenken? Ich brauche wirklich Hilfe, um dieses Problem zu lösen. – GerM

+0

Bitte versuchen Sie dies und kommentieren Sie: var data: any; $ scope.engineer = engineerS ... ponse) { Daten = Antwort; Rückgabedaten; }); – Sieg

+0

ok; versuche es jetzt. – GerM

Antwort

0

Hier ist die Lösung. Zunächst wird der Dienste Teil:

swof.factory('engineerService', function($resource) 
{ 
var data = $resource('/api/engineers/:empid',{empid: "@empid"}, 
     { 
      'get': 
      { method:'GET'}, 
      'save': 
      {method:'POST'}, 
      'query': 
      {method:'GET', 
      transformResponse: function(data) 
      { 
      return angular.fromJson(data); 
      }, 
      isArray:true}, 
      'remove': 
      {method:'DELETE'}, 
      'delete': 
      {method:'DELETE'} 
     }); 
     return data; 
}); 

Jetzt für den Controller:

swof.controller('engineerController', ['$scope', '$log', '$http', 'engSchedService', 'engineerService', function($scope, $log, $http, engSchedService, engineerService) { 

engineerService.query().$promise.then(function(data) 
{ 
    $scope.engineers = data; 
}); 
}]); 

Die Werte in $ scope.engineers wurde in html mit ngrepeat zugegriffen wie folgt:

<tbody ng-repeat="engineer in (filtered = (engineers | filter: query | filter: searchKeyword | orderBy: orderByField:reverseSort))"> 

Big Danke an alle, die dazu beigetragen haben, mir dabei zu helfen. G

Verwandte Themen