В AngularJS фабрика не отвечает динамических данных в контроллер
Это мой заводской сервис, и он извлекает данные из веб-сервиса
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);
Теперь это используется в моем контроллере
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; }); } });
Значение услуги всегда неопределенно или пусто. Данные не передаются от фабрики к контроллеру. Я звоню в простой веб-сервис, никаких причудливых API или WCF.
Это были какие-то статические/фиктивные данные, они работали нормально. Контроллер извлекает данные и выводит их на экран.
Что я делаю не так?
Любая помощь очень ценится.
Спасибо
Что я уже пробовал:
Я новичок в AnuglarJS и изо всех сил пытался получить динамическую привязку данных, но если я помещаю некоторые статические/фиктивные данные, это работает.
Итак, где я все испортил? Чего еще не хватает в коде.
Konstantin A. Magg
Привет Реликвия,
насколько я могу судить, ваше фабричное определение выглядит прекрасно.
Как насчет вашей асинхронной реализации GetCustomers? Вы уверены, что вызов http post уже вернулся, когда вы установили `$scope.Клиентов?
Вероятно, точка останова на этой линии могла бы помочь: "верните клиента.XMLtoJSON(данные);`