javascript - 将许多执行 AJAX 操作的方法作为 Angular JS 中的一项服务进行合并

标签 javascript ajax angularjs

我正在编写一个应用程序,我必须在其中编写许多执行 AJAX 操作的函数。我想将所有这些功能放在一个模块中的一项服务下,并在需要时在 Controller 中调用这些功能。我知道它可以使用 Angular JS 模块来完成,但没有找到正确的方法来解决它。

谁能帮我解决这个问题?如果能举例说明就太好了。

最佳答案

我实际上做了一个空头blog entry不久前关于这个。

基本示例:

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

//create a service:
app.factory('myService', function($http) {
   return {
      getFoo: function(success) {
        $http.get('/Foo/Url/Here').success(success);
      }
   }
});

//use it in a controller
app.controller('MyCtrl', function($scope, myService) {
    myService.getFoo(function(data) {
        $scope.foo = data;
    });
});

将 $http 与 $q 结合使用以获得更流畅结果的示例。

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

//create a service:
app.factory('myService', function($http, $q) {
   return {
      getFoo: function() {
          var deferred = $q.defer();
          $http.get('/Foo/Url/Here').success(function(data) {
              deferred.resolve(data);
          }).error(function(){
              deferred.reject();
          });
          return deferred.promise;
      }
   }
});

//use it in a controller
app.controller('MyCtrl', function($scope, myService) {
    $scope.foo = myService.getFoo();
});

关于javascript - 将许多执行 AJAX 操作的方法作为 Angular JS 中的一项服务进行合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15117130/

相关文章:

javascript - 简单检查全部(对于复选框)不起作用

javascript - 根据angularJS中的另一个输入[type=text]值设置输入[type=range]最大值

javascript - 哪些浏览器支持多行字符串?

javascript - 为什么 jQuery 的 $.makeArray 忽略字符串键?

javascript - 将带有参数的函数传递给javascript中的另一个函数

php - 如何延迟 PHP 函数在 jQuery Ajax 循环中触发?

javascript - 一次立即发出两个请求。 ASP MVC + JQuery Ajax

javascript - 我如何在 ng-bind-html 中使用 ng-click

angularjs - 在这种情况下我应该使用隔离范围吗?

javascript - Kendo UI 中的 X 轴标签步数间隔