一尘不染

AngularJS $ location不更改路径

angularjs

提交表单后,更改页面的URL时遇到问题。

这是我的应用程序的流程:

  1. 设置了路由,URL被识别到某个表单页面。
  2. 页面加载,控制器设置变量,指令被触发。
  3. 触发一个特殊格式指令,该指令使用AJAX执行特殊格式提交。
  4. 执行完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'];

有人可以帮我吗?


阅读 224

收藏
2020-07-04

共1个答案

一尘不染

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

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

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

2020-07-04