2016-04-14 71 views
0

我想创建一个$ http.get服务,但我在AngularJS中遇到了服务问题。我创建这个代码和它的工作原理,但所有的代码是在CONTROLER:

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"); 
     }); 
    } 
]); 

你能帮我在服务中创建的呢? 谢谢。

+0

你看了关于(HTTPS [如何创建服务?]://docs.angularjs。 org/guide/services) –

回答

0

这是一个完美的解决方案,CONTROLER:

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

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

Web服务:

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); 
       }); 
      } 
     } 
    ]); 
1

创建名称fichierService服务和像

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

功能getData,并通过注入

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"); 
    }); 
} 
]); 
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); 
       }); 
    } 
}); 

使用fichierService服务在您的PhoneListCtrl控制器,然后你可以使用你的服务像这样

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

这应该给出一个关于如何开始实施自己的服务的想法。

+0

是monApp.fooService是否正确?应该是monApp.service –

+0

谢谢。我还在编辑 – jmugz3