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



目前,我在每个控制器中都有$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);
    };
})();

您有两个选择:

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
     });
});

最新更新