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

时间:2015-12-06 13:24:44

标签: angularjs ionic

目前我在每个控制器中都有$ 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 个答案:

答案 0 :(得分:0)

您有两个选择:

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

2)作为全局JavaScript文件中的函数。 只需将函数放在一些普通的JavaScript文件中,并将其包含在index.html中。然后你可以从任何地方打电话。

答案 1 :(得分:0)

你可以做下一个:

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

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