2013-04-25 33 views
5

değiştirir:angularjs: rotayı önleyen benim denetleyicisi aşağıdakileri yaparak denedim

$scope.$on("$routeChangeStart", function (event, next, current) { 
     if (!confirm('are you sure ?')) { 
     event.preventDefault();   
     } 
    }); 

Ama çalışmıyor. Bunu yapmanın yolu olmamalı mı?

+0

Bunu nerede yapıyorsunuz? Bir jsfiddle gönderebilir misin? Bunu muhtemelen $ rootScope'ta yapmak istersiniz. Uygulamanızın bootstrap'inin bulunduğu yere koymanızı öneririm. Bir jsFiddle gönderin ve sizin için düzeltmeye çalışacağım. –

+0

güzel, ama ben ui yönlendirici kullanarak sona erdi, bu yüzden yerine çalışır $ stateChangeStart kullanmak zorunda kaldı. – Sam

cevap

0

Ben ui-router kullanarak sona erdi, bu yüzden yapıyorum yoludur:

$scope.$on('$stateChangeStart', function (event) { 
    if (!confirm('are you sure ?')) { 
     event.preventDefault(); 
    } 
}); 

ve çalışıyor.

0

Bağlantıları üzerinde bir yönerge koyardım, bu da rotayı değiştirmeden önce onaylanmalıdır. Sadece JSFiddle'da prototipledim, test etmedim. Ama bence bu uygun yol olmalı.

(function (angular) { 
    module = angular.module('confirm', []); 
    ConfirmDirective = function() { 
     return { 
     restrict: 'A', 
     link: function (scope, elm, attrs, ctrls) { 
      angular.element(elm).bind('click', function (event) { 
       alert("Sure?"); 
       event.preventDefault(); 
       return false; //or true, depends on you 
      }); 
     } 
    }; 
    }; 
    module.directive("confirm", ConfirmDirective); 
}(angular)); 

http://jsfiddle.net/L6xBF/3/

Kontrol ve denemek

.

Selamlar

+1

Bu güzel ama aradığım şey değil. Rota değişikliği için izlemem gerek. Bu, kullanıcının tarayıcının geri düğmesine vurduğunda içerir. – Sam

+0

Ayrıca tüm rota değişikliklerini yakalamak ve her bağlantıya bir onay eklemek de bunu yapmanın en iyi yolu gibi görünmeyebilir. – andersonvom

İlgili konular