使用$ locationChangeStart来防止位置更改在angularjs中不起作用

时间:2014-03-20 11:38:10

标签: javascript angularjs

我有表格,当编辑时,如果用户重定向到新页面,我必须发出警告消息,不保存数据。一旦用户按下确定,它就必须重定向到预期的页面。我能够通过防止更改lcoation来传递消息,但是一旦单击“确定”按钮,路径就不会改变。

 $scope.$on "$locationChangeStart", (event, newUrl) ->
    if userSettingsService.getUserDataFormEdited()
      event.preventDefault()
      alertService.show($scope.formNotSaved)
      .then (response) ->
          switch
            when response.isOK()
              $window.location.href = newUrl
              return
          return

alertService负责警告消息

这种使用$ locationChangeStart的方法是否正确?请帮我解决这个问题

1 个答案:

答案 0 :(得分:0)

问题是,首先在浏览器中有角度路由更改。

因此即使您添加代码检查/验证任何内容,您也必须手动恢复浏览器路径:

$window.history.back();

但我不认为这是你想要做的,最好的解决方案是在任何路线改变之前处理你的alert。我建议您将代码添加到ng-submit的{​​{1}}属性中。