2016-06-11 9 views
-3

In meiner Konsole kommt der Fehler "getIdData ist nicht definiert" was ist falsch mit meinem Code. Hier ist mein Service und getIdData ist meine Funktion im Service.Was ist falsch an diesem Code in eckigen?

$scope.editUserDetail = function editUserDetail(){ 
     $scope.showEditView = !$scope.showEditView; 
     $scope.showSubmitView = !$scope.showSubmitView; 
     console.log(deal); 
     deal.getIdData().then(function successCb(data){ 
      $scope.editIdOptionsData=data; 
     }); 
}; 
+0

Sie „getIdData“ Funktion definiert in "Deal"? –

+0

seit 'deal' ist Ihr Service sollte es in Ihrem Controller injiziert werden nicht als Parameter für Ihre Funktion übergeben. Wie Sie wahrscheinlich in Ihrem 'console.log (deal) 'sehen können, sollte es auch keine' getIdData()' Funktion geben. Fügen Sie den Controller und den Servicecode hinzu, damit wir weitere Details zur Verfügung haben. – adolfosrs

+0

Yeah Umer .. Ich habe "getIdData" -Funktion in "deal" definiert und in "getIdData" rufe ich meine API wie service.getIdData = function (data, accountId, decisionMakerDetail) { var def = $ q.defer() ; var url = baseUrl + '/ api/accountsbenutzer /' + accountId + '? Role =' + decisionMakerDetail; httpHelper ._ $ http ({ methode: 'post', url: url, daten: daten, def: def }, funktion (resp) { def.resolve (resp.msg); }); Return def.Promise; }; –

Antwort

0

Das Objekt, das Sie das Senden als ein Parameter definiert nicht die getIdData() Funktion.

Ihre Anmeldung ändern:

console.log(deal.getIdData); 

und dann prüfen, ob es den Funktionscode/definition zurückgibt.

Hier ist ein Link mit einem Beispiel, wie eine Fabrik und Service zu implementieren. Angular factory and service

+0

Noch zeigt dies "getIdData ist keine Funktion". Ich füge Konsole hinzu, um nur das Ergebnis zu sehen. Wenn ich das entfernen werde, dann zeigt dasselbe an. –

0

Bitte säubern Sie Ihren Browser und inspizieren Sie source.Look deal.getIdData() ist geladen oder nicht.Vielleicht ist es nicht geladen.Laden Sie bitte richtig.

+0

Hey .. Dies zeigt immer noch "getIdData ist keine Funktion". Ich füge Konsole hinzu, um nur das Ergebnis zu sehen. Wenn ich das entfernen werde, dann zeigt dasselbe an. –

+0

Die getIdData-Funktion nicht entfernen, sondern nur den Browser überprüfen und zur Quelloption wechseln und sicherstellen, dass der Dienst geladen und die Funktion erfolgreich in den Browser geladen wurde. Versuchen Sie es dann erneut. – Zaman

+0

Ich versuche Debugger zu überprüfen, aber Debugger kommt nicht zu diesem Dienst. Beim Hover "getIdData" wird nicht definiert angezeigt. Obwohl ich in meinem Dienst, in dem ich meine API anrufe, eine Funktion mit diesem Namen erstellt habe. –

1

Bitte Beispiel arbeiten hier: Demo

Sie sind vergessen Dienstobjekt aus dem Dienst zurückzukehren.

dh

schreiben in Ihrem Dienst folgenden Code,

return service; 

dh

angular.module('account').service('deal', function deal($http, accountConfiguration, $q, $log, httpHelper) { 
    var service = {}; 
    var baseUrl = account.app.url; 
    service.getIdData = function(data, accountId, decisionMakerDetail) { 
      var def = $q.defer(); 
      var url = baseUrl + '/api/accountsusers/' + accountId + '?role=' + decisionMakerDetail; 
      httpHelper._$http({ 
         method: 'post', 
         url: url, 
         data: data, 
         def: def 
      }, function(resp) { 
       def.resolve(resp.msg); 
      }); 
      return def.promise; 
     }; 

     return service; 
}); 

Oder wie Sie Service verwenden, können Sie es dies mit schreiben

angular.module('account').service('deal', function deal($http, accountConfiguration, $q, $log, httpHelper) { 

    var baseUrl = account.app.url; 
    this.getIdData = function(data, accountId, decisionMakerDetail) { 
      var def = $q.defer(); 
      var url = baseUrl + '/api/accountsusers/' + accountId + '?role=' + decisionMakerDetail; 
      httpHelper._$http({ 
         method: 'post', 
         url: url, 
         data: data, 
         def: def 
      }, function(resp) { 
       def.resolve(resp.msg); 
      }); 
      return def.promise; 
     }; 

    }); 

Für weitere Informationen überprüfen Sie bitte - Services

0

Sie geben das Objekt, das die Servicereferenz enthält, nicht von Ihnen zurück. Ändern Sie Ihren Code wie folgt, damit es funktioniert.

angular.module('account') 
    .service('deal', function deal($http, accountConfiguration, $q, $log, httpHelper) { 
    var service = {}; 
    var baseUrl = account.app.url; 

    service.getIdData = function(data,accountId,decisionMakerDetail){ 
     var def = $q.defer(); 
     var url = baseUrl + '/api/accountsusers/' + accountId + '?role=' + decisionMakerDetail; 

     httpHelper._$http({ 
      method: 'post', url: url, data: data, def: def 
     }, function (resp) { 
      def.resolve(resp.msg); 
     }); 
      return def.promise; 
    }; 

    return service; 
}); 

S8nce Sie kehrten nichts von dem Dienst, obwohl deal Dienst registriert wird, wird der Wert nicht definiert ist und wenn Sie versuchen, deal.getIddata() Sie die oben genannten Fehler haben erhalten den Zugriff auf