全局设置功能的正确方法是什么,以便它可以在所有控制器中使用

What is the right way of setting function globally so its usable in all the controllers

目前我在每个控制器中都有 $timeout 函数,我真的想把它放在我可以在全球范围内随处使用的地方。有人提到最好将其作为一项服务。这是这样做的正确方法吗?如果是这样,我该如何更改它的结构以使其适合服务。

(function () {
    'use strict';

    angular
        .module('app')
        .controller('MenuController', MenuController);

    MenuController.$inject = ['navigationService', 'dealService', '$scope', '$timeout', 'ionicMaterialInk', 'ionicMaterialMotion'];
    function MenuController(navigationService, dealService, $scope, $timeout, ionicMaterialInk, ionicMaterialMotion) {
        // Set Header
        $scope.$parent.$parent.$parent.showHeader();
        $scope.$parent.$parent.$parent.clearFabs();
        $scope.$parent.$parent.$parent.setExpanded(false);
        $scope.$parent.$parent.$parent.setHeaderFab(false);


        // Delay expansion
        $timeout(function () {

            ionicMaterialMotion.slideUp({
                selector: '.slide-up'
            });
        }, 300);

        var vm = this;
        vm.menuItems = [];

        navigationService.getAllNavigations()
            .success(function (data, status, headers, config) {
                vm.menuItems = data;

                $timeout(function () {
                    // Set Motion
                    ionicMaterialMotion.fadeSlideInRight();

                    // Set Ink
                    ionicMaterialInk.displayEffect();
                }, 100);
            });

        dealService.setCurrentDeal();
    };
})();

目前我有这个,但它不起作用!

(function () {
    'use strict';
    angular
        .module('app')
        .service('globalService', globalService);

    function globalService($http, restServer) {
        var globalService = {
            timeout: timeout()
        };

        return globalService;

        // Delay expansion
        $timeout(function () {

            ionicMaterialMotion.slideUp({
                selector: '.slide-up'
            });
        }, 300);
    };
})();

您有 2 个选择:

1) 将其用作服务 它可能不适合你,因为你的服务不知道 ionicMaterialMotion 是什么,你应该向它添加一个依赖项。

2) 作为全局 JavaScript 文件中的函数。 只需将一个函数放入某个普通的 JavaScript 文件中,然后将其包含在您的 index.html 中。然后你可以从任何地方调用它。

您可以执行下一步:

yourApp.controller("generalController", function($scope) {
    // Your code.
});

yourApp.controller("singleController", function($scope, $controller){
     /* Extend generalController*/
     $controller('generalController', {
          $scope: $scope
     });
});