2016-01-27 4 views
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

Да, так оно и есть. Спасибо. –

ответ

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

Действительно, я сказал то же самое, но в целом. В соответствии с вашей страницей1Ctrl.js это «Toggler.menuToggle()» –

Смежные вопросы