angularjs:防止路线变化

时间:2013-04-25 09:48:32

标签: angularjs angularjs-controller

我尝试在我的控制器中执行以下操作:

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

但它不起作用。那不应该是这样做的吗?

2 个答案:

答案 0 :(得分:0)

我会在您的链接上放置一个指令,在更改路线之前应该确认。 我只是在JSFiddle中制作原型,我没有测试它。但我认为,这应该是正确的方法。

(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/

检查并尝试。

此致

答案 1 :(得分:0)

我最终使用ui-router,所以我这样做的方式是:

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

它有效。