当前位置: 首页 > 面试题库 >

在AngularJS中$ location.path不会在工厂中更改

薛兴言
2023-03-14
问题内容

我的工厂看起来像:

'use strict';

angular.module('myApp')
  .factory('httpInterceptor',['$q','$location', '$rootScope', function($q, $location, $rootScope){
    return {
      response: function(response) {

        if(response.success === false) {
console.log("Redirecting");
            $location.path('/login');
            return $q.reject(response);
        }

        return response || $q.when(response);
      }
    }
}]);

它吐出日志,但不更改路径。我该怎么做才能做到这一点?


问题答案:

$
location
的文档说:

请注意,设置员不会立即更新window.location。而是$ location服务知道作用域的生命周期,并在作用域$ digest阶段将多个$
location突变合并为一个“ commit”到window.location对象。

因此,如果拒绝诺言对产生影响$location,那么您可能看不到预期的更改。

要强制在角度生命周期之外进行更改,可以设置hash用法window.location,然后强制重新加载页面。当然,这将停止执行随后执行的任何代码并清除会话,但是如果用户未登录,这可能就是您想要的。



 类似资料:
  • 问题内容: 我是AngularJS的新手,觉得很有趣,但是对于以下情况我不太清楚。 我分配并使用返回数据时遇到错误,无论如何我可以将返回数据分配给吗? 问题答案: 您通常不在工厂,服务或提供商内部使用。通常,您将返回(由返回),然后在控制器(您确实有)中处理promise 。 控制器功能:

  • 问题内容: 因此,在普通的旧Angular中,您将像这样注入一个Factory: 现在使用Typescript,我试图这样使用: 使用Typescript在Angular中注入工厂的正确方法是什么? 问题答案: app.factory(’MyFactory’,Services.MyFactory)这不起作用,从不实例化。 真正。这是因为从未使用运算符调用作为第二个参数()传递的函数。如果要使用Ty

  • 问题内容: 我一直在尝试AngularJS进行实验项目,但我遇到了这个问题。在我的html中,我想显示项目列表 Index.html 最初,我只是使用一个简单的控制器来获取信息并使用以下命令更新视图: controllers.js(原始) 这工作得很好,我可以获得项目清单。同时,通过更改我的结构以使用工厂发出相同的请求并将其绑定到$ scope.items,该命令将不起作用。我尝试了许多$ wat

  • 问题内容: 我已经阅读了有关此问题的主题,例如:[\AngularJS中未更新视图,\但我仍然不明白如何在我的简单示例中应用它。 我有这个功能: 当代码中的其他地方更新时(用户单击,交互,发送XHR请求时),它不会更新我的视图。我知道我需要使用$apply做些事情,但我不知道在哪里以及如何做。 有人可以向我解释如何针对这个简单用例解决此问题吗? 我的模型看起来像这样(如果这个问题是必要的)-它里面

  • 问题内容: 我在Hibernate 4中生成会话工厂时遇到问题。在Hibernate 3中,我很简单地做到了: 现在,我需要将ServiceRegistry类传递给buildSessionFactory,但是Javadocs对如何执行此操作非常含糊。有小费吗? 问题答案: 是的,他们已经弃用了先前的buildSessionFactory API,并且做起来很容易..您可以执行类似的操作。 编辑 :

  • 问题内容: 我想使用查询字符串成功登录后将用户重定向到另一个页面。如果我复制并粘贴到浏览器的地址栏中,则可以正常工作。但是如果我用 网址看起来像 如何将%3F解码为“?” ?谢谢 问题答案: 它应该是