【问题标题】:How to run a function in every page in AngularJs如何在AngularJs的每个页面中运行一个函数
【发布时间】:2013-11-25 23:59:42
【问题描述】:

我创建了一个验证 Cookie 是否存在的函数,我想使用 angularjs 在每个页面中运行这个函数。我似乎无法使该功能运行。我应该把它放在一个新的控制器中吗?

这是我达到的程度:

  angular.module('myApp', ['ngCookies']).
    config(['$routeProvider', function($routeProvider) {
    $routeProvider.
        when('/products', {templateUrl: '/tmpl/products.html', controller: Ctrl}).
        otherwise({redirectTo: '/index'})
  }]).run( function($rootScope, $location) {

 //should I call it here?
 //validateCookie();


});

function validateCookie($scope, $cookieStore, $http){


}

【问题讨论】:

    标签: jquery cookies module angularjs


    【解决方案1】:

    我认为有几种方法可以解决这个问题。如果您希望每次更改路由时都进行此验证(这意味着它将在应用程序首次启动时以及您在应用程序中访问的每个页面上运行),您可以执行以下操作:

    angular.module('myApp', ['ngCookies']).
    config(['$routeProvider', function($routeProvider) {
        $routeProvider.
            when('/index', {templateUrl: '/tmpl/index.html', controller: IndexCtrl}).
            when('/products', {templateUrl: '/tmpl/products.html', controller: Ctrl}).
            otherwise({redirectTo: '/index'})
    }])
    .run(function($rootScope, validateCookie) {
        $rootScope.$on('$routeChangeSuccess', function () {
            validateCookie($rootScope);
        })
    })
    .factory('validateCookie', function($cookieStore, $http){
        return function(scope) {
            // Validate the cookie here...
        }
    })
    

    如果您不需要在每次更改路线时都运行,您可以更改“运行”功能:

    .run(function($rootScope, validateCookie) {
        validateCookie($rootScope);
    })
    

    【讨论】:

      【解决方案2】:

      也许您可以在路由更改之前绑定路由事件 (routeChangeStart) 来测试它?如果测试失败,则重定向。

      http://docs.angularjs.org/api/ng.$route

      关于取消路线变更的讨论: https://groups.google.com/forum/?fromgroups=#!topic/angular/-yPBLMJQO_Q

      【讨论】:

        【解决方案3】:

        我会创建一个您想要注入控制器的服务。角度站点有一个很好的例子来说明如何做到这一点:Creating Services。通常,如果您想在许多地方使用某些逻辑,则创建服务就是这样做的方法。

        【讨论】:

        【解决方案4】:

        我将研究结合 routeProvider resolve 属性并使用 Services

        概览视频

        http://www.youtube.com/watch?v=Kr1qZ8Ik9G8

        API 详细信息

        http://docs.angularjs.org/api/ng.$routeProvider

        【讨论】:

          猜你喜欢
          • 2017-04-18
          • 1970-01-01
          • 1970-01-01
          • 2020-02-22
          • 1970-01-01
          • 2014-09-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多