2016-06-25 7 views
0
<script> 
var app = angular.module('myApp', ['ngMaterial']); 

app.factory('factoryProvider', function ($http, $q) { 
    var facObj = {}; 
    facObj.getLastWorkplace = $http.get('plugins/wcf-service/ServiceProvider.svc/getLastWorkPlacesJSON') 
     .then(function (response) { 
      return response.data; 
     }); 
    return facObj; 
}); 

app.controller('dashboardController', function ($scope, factoryProvider) { 

    factoryProvider.getLastWorkplace.then(function (successResponse) { 
     $scope.wp = successResponse; 
     console.log('inside'); 
     console.log($scope.wp); // Return an object that I want 
    }); 
    console.log('outside'); 
    console.log($scope.wp); // $scope.wp is empty 
}); 

Das Protokoll außerhalb Konsole läuft zunächst innerhalb der Konsole ist der zweite ist. Das Problem ist, dass $ scope.wp nur Daten in getLastWorkplace Callback-Funktionen abrufen kann und keine Daten an ng-model (mit wp.property) binden kann. Wie man es löst? Vielen Dank für Ihre Lesung

+0

Mögliche Duplikate von [AngularJS Factory http gibt leer] (http://stackoverflow.com/questions/16336987/angularjs-factory-http-returns-empty) – csbarnes

+0

Ich denke, Sie sollten ein $ Versprechen verwenden, um das Objekt zu binden. –

+0

Ok, es funktioniert außerhalb aber $ scope.wp ist ein $$ Zustand : Objekt. Wie kann ich auf die Daten zugreifen? –

Antwort

1

Sie zuweisen $scope.wp zweimal und die endgültige Zuordnung ist der Rückgabewert Ihrer getLastWorkplace Anruf (die Sie nichts zurück.)

ändern es dazu ...

factoryProvider.getLastWorkplace.then(function (successResponse) { 
    $scope.wp = successResponse; 
}); 

oder ...

$scope.wp = factoryProvider.getLastWorkplace; 

aber nicht beide.

+0

$ scope.wp kann Daten empfangen, die ich will, aber es bindet noch keine Daten an ng-model –

+0

Versuchen Sie '$ scope.wp = {}' zuzuweisen, bevor Sie Ihren Provider anrufen. Dein letztes 'console.log' ist immer noch leer, da es vor dem Verspre- chen deines Versprechens ausgeführt wird. Wenn es immer noch nicht funktioniert, posten Sie Ihre Vorlage. – Rob

Verwandte Themen