正确创建$ http.get

时间:2016-04-14 19:37:20

标签: javascript angularjs angularjs-service http-get

我想正确创建$ http.get服务,但我在AngularJS中遇到了服务问题。我创建此代码并且它可以工作,但所有代码都在控制器中:

var monApp = angular.module('monApp', []);
monApp .controller('PhoneListCtrl', ['$scope', '$http',
    function($scope, $http) {
        $http.get('http://port:serveur/fichier.xml').then(function(response) {
            var x2jObj = X2J.parseXml(response.data); //X2J.parseXml(xmlDocument, '/');
            var tableauJSON = X2J.getJson(x2jObj);
        }, function(a, b, c) {
            alert("Impossible de télécharger le fichier");
        });
    }
]);

你能帮我在服务中创建吗? 感谢。

3 个答案:

答案 0 :(得分:1)

创建名称为fichierService且功能为getData的服务

monApp.factory("fichierService", function($http) {
  return {
    getData: function() {
         return $http.get('http://port:serveur/fichier.xml');       
    }
  }
});

并通过注入

fichierService控制器中使用PhoneListCtrl服务
monApp .controller('PhoneListCtrl', ['$scope', '$http','fichierService',
function($scope, $http, fichierService) {
    fichierService.getData().then(function(response) {
        // rest of code
    }, function(a, b, c) {
        alert("Impossible de télécharger le fichier");
    });
}
]);

答案 1 :(得分:0)

monApp.service('myFooService', function() {
    this.get = function (url) {
        return $http.get(url).then(function(response) {
                  var x2jObj = X2J.parseXml(response.data); 
                  var tableauJSON = X2J.getJson(x2jObj);
               });
    }
});

然后你可以像这样使用你的服务

monApp.controller('fooCtrl', function($scope, myFooService) {
    myFooService.get('http://foo.com/foo.xml');
});

这应该可以让您了解如何开始实施自己的服务。

答案 2 :(得分:0)

这是完美的解决方案,控制器:

var app = angular.module("myApp", []);

app.controller("MainCtrl", ["$scope", "userService",
    function($scope, userService) {
        userService.getData();
    }
]);

网络服务:

 app.service("userService",["$http",
        function($http) {
            _this = this;
            this.getData = function() {
                $http.defaults.headers.common = {"Access-Control-Request-Headers": "accept, origin, authorization"};
                $http.defaults.headers.common['Authorization'] = 'Basic ' + window.btoa('username' + ':' + 'password');
                $http.get('http://YourServer:YourPort/rest/api/2/auditing/record').
                success(function(data) {
                    console.log(data);
                });
            }
        }
    ]);