0

我应该在哪里使用 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 网站无法帮助我理解。

感谢您的帮助!

4

1 回答 1

1

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

在应用程序启动时是否运行它与从控制器或服务执行 $http 请求无关。需要时发送 http 请求。

请注意,当 angular find 时,控制器会被实例化<div ng-controller=whatever>...。如果您的 http 请求在那里,它将被触发。几周前有一个关于服务和工厂的类似问题,还有一个关于在控制器中注入服务的问题

于 2013-07-23T09:06:26.410 回答