访问页面时自动运行服务功能

时间:2016-01-27 10:30:44

标签: angularjs

下面的routing.js代码使用$ routeProvider注入给定页面。每个页面都有自己的控制器,它使用服务ToggleFactory。

有没有办法在访问页面时自动启动服务“TogglerFactory”的“menuToggle”功能?感谢

//---routing.js----------------------------
(function () {
    'use strict';
    angular
        .module('appModule')
        .config(['$routeProvider', routing]);

    function routing ($routeProvider) {
        $routeProvider
            .when('/page1', {
            url: "/page1",
            templateUrl: 'views/page1.html',
            controller: 'Page1Ctrl'
        })
            .when('/page2', {
                url: "/page2",
                templateUrl: 'views/page2.html',
                controller: 'Page2Ctrl'
            })
    }
})();

//---page1Ctrl.js------------------------
(function () {
    'use strict';
    angular
        .module('appModule')
        .controller('Page1Ctrl', ['$scope', 'TogglerFactory', page1Ctrl]);

    function page1Ctrl($scope, Toggler) {
        $scope.menuToggle = Toggler.menuToggle;
    }
})();

//---menuToggle.js-----------------------
(function () {
    'use strict';

    angular.module('appModule')
        .factory('TogglerFactory', function($rootScope) {
            var TogglerFactory = {};

            TogglerFactory.menuToggle = function(){
                $rootScope.clicked = !$rootScope.clicked;
            }

            return TogglerFactory;
        });
}());

1 个答案:

答案 0 :(得分:0)

您已经将“TogglerFactory”注入控制器,所以只需执行

Toggler.menuToggle() inside your controller

一般控制器

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

appModule.service('TogglerFactory', function() {
    return {
        menuToggle : function() {
            alert("Inside ToggleFactory");
        }
    }
})

appModule.controller('Page1Ctrl', function($scope, $http, TogglerFactory) {
    TogglerFactory.menuToggle();
});
您的控制器

   appModule.controller('Page1Ctrl', ['$scope', 'TogglerFactory', page1Ctrl]);

    function page1Ctrl($scope, Toggler) {
        Toggler.menuToggle();
    }