最近我偶然发现了一个非常奇怪的生产代码,似乎是在某些情况下,Angular可能会$locationChangeStart在初始页面加载时触发事件.此外,next参数值将等于该current值.这对我来说似乎很奇怪.
我没有找到任何相关的文件,但这里是显示这种情况的小提琴http://jsfiddle.net/tJSPt/327/
可能唯一的区别是在生产中我们使用手动Angular bootstrap.
任何人都可以解释或指向信任的信息来源,说明为什么在页面加载时触发了该事件?这是我们必须要做的事情,还是当前Angular实现的特殊性或我们使用它的方式?
我最近经历过这种情况,但发生这种情况的原因是因为我正在使用ui-router语法controllerAs。也许你也是?
我偶然发现这个链接帮助了我:在路由解析器完成之前不应更改历史记录
我听了广播$locationChangeStart,但它在我进入状态时就断点了,而不是在兴奋时。
我通过执行以下操作修复了我的问题:
$stateChangeStart。var vm = this;这是我的代码如下所示:
// ...
$scope.$on('$stateChangeStart', function (event) {
if (vm.myForm!= null && vm.myForm.$dirty) {
if (!confirm("Are you sure you want to leave this page?")) {
event.preventDefault();
}
}
});
var vm = this;
// vm.xxx = xxxx; .etc ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1103 次 |
| 最近记录: |