2013-04-22 15 views
12

Tôi đã tạo ra một hàm xác nhận nếu một Cookie tồn tại và tôi muốn chạy chức năng này trong mỗi trang sử dụng angularjs. Tôi dường như không thể làm cho chức năng chạy. Tôi có nên đặt nó vào trong một bộ điều khiển mới không?Làm thế nào để chạy một hàm trong mỗi trang trong AngularJs

Đây là cách nay tôi đạt được:

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){ 


} 

Trả lời

35

Tôi nghĩ rằng sẽ có một vài cách giải quyết này. Nếu bạn muốn gây xác nhận điều này xảy ra mỗi khi bạn thay đổi các tuyến đường (có nghĩa là nó sẽ chạy khi ứng dụng đầu tiên bắt đầu cũng như trên tất cả các trang mà bạn đi đến bên trong ứng dụng), bạn có thể làm một cái gì đó như thế này:

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... 
    } 
}) 

Nếu bạn không cần phải chạy trên tất cả các thay đổi lộ trình, bạn chỉ có thể thay đổi "chạy" chức năng:

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

Tôi muốn tạo ra một dịch vụ mà bạn sẽ muốn tiêm vào bộ điều khiển của bạn. Các trang web góc có một ví dụ tốt về làm thế nào để làm điều này: Creating Services. Thông thường nếu bạn muốn sử dụng một số logic ở nhiều nơi tạo ra một dịch vụ là cách để làm điều đó.

+0

Phần tiếp theo của hướng dẫn dev là khoảng cách tiêm một dịch vụ thành một bộ điều khiển http:. //docs.angularjs .org/guide/dev_guide.services.injecting_controllers. Điều đó cũng tốt khi đọc – fistoftheheavns

Các vấn đề liên quan