Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $locationChangeStart不再被调用_Javascript - Fatal编程技术网

Javascript $locationChangeStart不再被调用

Javascript $locationChangeStart不再被调用,javascript,Javascript,这一切在很长一段时间内都很好,但我只是停了下来。我不明白为什么$locationChangeStart不再被调用 我唯一改变的是将我们的测试转换为使用Jasmine 2.0.1框架。但是,即使我从VisualStudio项目中删除该框架,它仍然不起作用。奇怪的是,它有时会在测试中被调用 有什么东西干扰了这一点,但是什么?我调试到$on方法中,可以看到侦听器被添加到侦听器集合中 任何提示都非常感谢。谢谢,贝丝 这是我在控制器文件最开始部分的代码。在debug中,我看到正在加载侦听器,但它从未被调用

这一切在很长一段时间内都很好,但我只是停了下来。我不明白为什么$locationChangeStart不再被调用

我唯一改变的是将我们的测试转换为使用Jasmine 2.0.1框架。但是,即使我从VisualStudio项目中删除该框架,它仍然不起作用。奇怪的是,它有时会在测试中被调用

有什么东西干扰了这一点,但是什么?我调试到$on方法中,可以看到侦听器被添加到侦听器集合中

任何提示都非常感谢。谢谢,贝丝

这是我在控制器文件最开始部分的代码。在debug中,我看到正在加载侦听器,但它从未被调用

app.controller('someXYZCtrl'、['$scope'、'resourceFactory'、'$http'、'$routeParams'、'$filter'、'$location'、'$timeout',函数someXYZCtrl($scope、resourceFactory、$http、$routeParams、$filter、$location、$timeout){

//当用户离开页面导航时提醒用户

 var navigationConfirmed = false;
 $scope.$on('$locationChangeStart', function (event, next, current) {
 if (navigationConfirmed) {
            return;
 }

 event.preventDefault();
  bootbox.confirm(" ...... ", function (result) {
            if (result) {
                navigationConfirmed = true;
                $scope.$apply(function () {
                    var hash = next.substr(next.indexOf('#') + 1);
                    $location.path(hash);
                });

            }
        });
    });

您是否尝试过使用
$rootScope.$on()
而不是
$scope.$on()
?凭直觉,您的代码似乎很好。是的,早些时候,$rootScope未被识别-抛出了一个错误。不确定为什么,我对控制器和javascript不熟悉。也许这就是问题所在?