首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从服务激活微调指令

如何从服务激活微调指令
EN

Stack Overflow用户
提问于 2019-03-16 01:24:27
回答 2查看 105关注 0票数 0

如何在AngularJS服务中使用AngularJS指令?

在我的AngularJS 1.5应用程序中,我有一个在视图中心显示微调器的指令。我希望能够通过服务的方式激活这个旋转器。

因此,例如,可以将服务注入到控制器中,无论何时调用,它都会触发微调器显示在屏幕上。

如何将此指令注入到服务中?

目前,无论我在哪里查看,iI都只能找到关于如何将服务注入到指令中的指令,反之亦然

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-16 02:50:37

方法是使用$rootScope/$scope event总线:

代码语言:javascript
复制
 app.service("dataService", function($rootScope, $http) {
     this.get = function() {
         $rootScope.$broadcast("dataService.Start");
         return $http.get(url).finally(function() {
             $rootScope.$broadcast("dataService.Done");
         });
     };
 })

在指令中:

代码语言:javascript
复制
 app.directive("spinner", function() {
     return {
         link: postLink,
     };
     function postLink(scope, elem, attrs) {
         scope.$on("dataService.Start", function (event) {
             elem[0].startSpinner();
         });
         scope.$on("dataService.Done", function (event) {
             elem[0].stopSpinner();
         });
     }
});

有关更多信息,请参阅AngularJS Developer Guide - Scope Event Propagation

票数 2
EN

Stack Overflow用户

发布于 2019-03-16 08:57:33

你可以安装angular-spinner,然后在你的index.html中包含文件,并在你的应用程序中添加依赖项:

代码语言:javascript
复制
var myapp = angular.module('myapp', ['angularSpinner']);

然后,您可以使用自定义指令截获所有http请求,而无需在每次http调用前添加start和在之后停止(代码较少)。

代码语言:javascript
复制
app.directive('usSpinner', ['$http', '$rootScope', function ($http, $rootScope) {
  return {
    link: function (scope, elm, attrs) {
      $rootScope.spinnerActive = false;
      scope.isLoading = function () {
        return $http.pendingRequests.length > 0;
      };

      scope.$watch(scope.isLoading, function (loading) {
        $rootScope.spinnerActive = loading;
        if (loading) {
          elm.removeClass('ng-hide');
        } else {
          elm.addClass('ng-hide');
        }
      });
    }
  };

}

然后在您的html中,将以下内容添加到body:

代码语言:javascript
复制
<span us-spinner></span>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55187860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档