2016-08-12 5 views
0

Das ist mein Werk Service ist, und es werden Daten von einem Webdienst zu holenAngularJS Fabrik Dienst nicht dynamische Daten Rückkehr an die Steuerung

var customersFactory = function ($http) { 
    var customer = []; 
    var getCustomersURL = "http://localhost:50340/Services/CustomerService.asmx/GetCustomers"; 

    customer.XMLtoJSON = function (data) { 
     data = data.replace('<?xml version="1.0" encoding="utf-8"?>', ''); ; 
     data = data.replace('<string xmlns="http://tempuri.org/">', '').replace('</string>', ''); 
     return $.parseJSON(data); 
    }; 

    customer.GetCustomers = function() { 
     $http.post(getCustomersURL).success(function (data, status, headers, config) { 
      return customer.XMLtoJSON(data); 
     }).error(function (ata, status, headers, config) { }); 
    }; 

    return customer; 
}; 

app.factory('customersFactory', customersFactory); 

Nun, dies in meinem Controller wird

app.controller("CustomersController", function ($scope, customersFactory) { 
    var service = []; 
    service = customersFactory.GetCustomers(); 
    $scope.Customers = service; 

    if ((typeof (service) != 'undefined') && service.length > 0) { 
     service.then(function (result) { 
      $scope.Customers = result; 
     }); 
    } 
}); 

Das verwendete Der Wert des Dienstes ist immer undefiniert oder leer. Daten werden nicht von der Fabrik an den Controller übergeben. Ich rufe einen einfachen Webdienst auf, keine schicken APIs oder WCF.

Es gab einige statische/Dummy-Daten, es funktioniert gut. Der Controller holt die Daten und wird angezeigt.

Wo mache ich mich falsch?

Jede Hilfe wird sehr geschätzt.

Danke

Antwort

1

Änderung dieser Linie var customer = []; dieser var customer = {};

Oder noch besser es eine Klasse machen ...

Änderung dieses Versprechen zurückzukehren:

customer.GetCustomers = function() { 
     return $http.post(getCustomersURL).error(function (data, status, headers, config) { }); 
    }; 

und Verwendung in der Steuerung:

app.controller("CustomersController", function($scope, customersFactory) { 
    $scope.Customers = []; 

    customersFactory.getCustomers().success(function(data, status, headers, config) { 
    $scope.Customers = customersFactory.XMLtoJSON(data); 
    }); 
}); 
+0

Vielen Dank WalksAway. Hab das hier. Ich habe verstanden, wo ich falsch gelaufen bin. Vielen Dank. – Vamsi

Verwandte Themen