这一切都运行良好很长一段时间,但刚刚停止我除了自己为什么$ locationChangeStart不再被调用。
我唯一改变的是将测试转换为使用Jasmine 2.0.1框架。但即使我从Visual Studio项目中删除该框架,它仍然无法正常工作。奇怪的是,它有时会在测试中被调用。
有些东西在干扰这个,但是什么?我调试了$ on方法,我可以看到监听器被添加到监听器集合中。
非常感谢任何提示。谢谢,贝丝
这是我在控制器文件开头的代码。在调试中,我看到正在加载侦听器但是它永远不会被调用。
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);
});
}
});
});