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