我应该在angularjs中使用$ http? - >工厂和服务之间的区别

时间:2013-07-23 08:59:34

标签: angularjs angularjs-service angularjs-controller

我应该在angularjs中使用 $ http 吗? 在控制器服务中? 我已经在服务中实现了它,但是我想在应用程序的开头不执行,我想在一些用户操作后执行,这可能在服务中吗?

'use strict';

/* Services */

// Demonstrate how to register services
// In this case it is a simple value service.
angular
    .module('myApp.services')
    .service(
            'RestService',
            function($http, $log) {

                this.getERPProfile = function() {
                    var request = request;
                    request = JSON.stringify(request);


                    $http(
                            {
                                url : url,
                                method : "POST",
                                headers : {
                                    'Accept' : 'text/xml',
                                    'Content-Type' : '"text/xml; charset=\"utf-8\""'
                                },
                                dataType : 'xml',
                                data : request

                            }).success(
                            function(data, status, headers, config) {
                                var v1 = data;
                                return data;
                                $log.log(v1);
                            }).error(
                            function(data, status, headers, config) {
                                var v2 = status;
                                return data;
                                $log.log(v2);
                            });
                };

并且有人提供有关工厂和服务差异的良好文档吗? angulajs网站并没有帮助我理解。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

服务首次实例化,第一次调用它们。例如,它们用于共享逻辑并在控制器之间公开数据。控制器是视图和模型之间的粘合剂,就像在任何MVC框架中一样。

在应用程序启动时运行它与从控制器或服务执行$ http请求无关。如果需要,请提供http请求。

请注意,当angular找到<div ng-controller=whatever>...时,控制器会被实例化。如果你的http请求在那里,它将被触发。几周之前有一个similar question about services and factories,另一个关于injecting a service in a controller