为了账号安全,请及时绑定邮箱和手机立即绑定

AngularJS $ location不更改路径

AngularJS $ location不更改路径

largeQ 2019-11-26 14:25:36
提交表单后,更改页面的URL时遇到问题。这是我的应用程序的流程:设置路由,URL被识别到某个表单页面。页面加载,控制器设置变量,指令被触发。将触发一个特殊格式指令,该指令使用AJAX执行特殊格式提交。执行完AJAX之后(Angular不会处理AJAX),则会触发回调,并且伪指令调用$scope.onAfterSubmit设置位置的函数。问题在于设置位置后什么也没发生。我也尝试将位置参数设置/为……不。我也尝试过不提交表格。什么都没有。我已经测试过,看看代码是否达到了onAfterSubmit功能(确实如此)。我唯一的想法是(由于从指令调用了它)以某种方式改变了函数的作用域,但是onAfterSubmit如果作用域改变了,那么又如何调用呢?这是我的代码var Ctrl = function($scope, $location, $http) {  $http.get('/resources/' + $params.id + '/edit.json').success(function(data) {    $scope.resource = data;  });  $scope.onAfterSubmit = function() {    $location.path('/').replace();  };}Ctrl.$inject = ['$scope','$location','$http'];有人可以帮我吗?
查看完整描述

3 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

几天前,我遇到了类似的问题。在我的情况下,问题是我使用第三方库(准确地说是jQuery)更改了内容,在这种情况下,即使调用函数和设置变量有效,Angular也不总是知道有更改,因此从不进行摘要。


$ apply()用于从角度框架外部以角度执行表达式。(例如,来自浏览器DOM事件,setTimeout,XHR或第三方库)。


$scope.$apply()更改位置并致电replace()Angular 后,请立即尝试使用,以告知发生了变化。


查看完整回答
反对 回复 2019-11-26
?
长风秋雁

TA贡献1757条经验 获得超7个赞

代替$ location.path(...)来更改或刷新我使用该服务的页面$window,在Angular中,此服务用作window对象的接口,并且该window对象包含location使您能够处理与位置相关的操作的属性或网址内容。


例如,window.location您可以分配一个新页面,如下所示:


$window.location.assign('/');

或刷新它,如下所示:


$window.location.reload();

它为我工作。它与您的预期有所不同,但可以实现给定的目标。


查看完整回答
反对 回复 2019-11-26
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

我遇到了同样的问题,但是我对$ location的调用已经在摘要中了。调用$ apply()只会产生一个$ digest已经在处理中的错误。


这个技巧奏效了(并确保注入$location到您的控制器中):


$timeout(function(){ 

   $location...

},1);

虽然不知道为什么这是必要的...


查看完整回答
反对 回复 2019-11-26
  • 3 回答
  • 0 关注
  • 647 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信