2016-04-14 53 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