автоматический запуск сервисной функции при посещении страницы

0

Код routing.js ниже вводит заданную страницу, используя $ routeProvider. На каждой странице есть собственный контроллер, который использует сервис ToggleFactory.

Есть ли способ автоматически запускать функцию "menuToggle" службы "TogglerFactory" всякий раз, когда страница посещается? благодаря

//---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;
        });
}());
  • 0
    Если вы просто вызовете метод Toggler.menuToggle () в вашем контроллере, он будет выполняться каждый раз, когда будет достигнут маршрут (страница загружена). Это не работает?
  • 0
    Да. Спасибо.
Теги:

1 ответ

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();
    }
  • 0
    Это не сработало. Предложение Bas Slagter сработало, хотя :)
  • 0
    На самом деле я сказал то же самое, но в целом. Согласно вашей page1Ctrl.js это "Toggler.menuToggle ()"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню