86

我正在尝试使用以下方法重定向到另一条路线:

$location.path("/route");

但由于某种原因,它不起作用。我使用 jQuery-UI 做了一个自动完成小部件,一旦用户选择了一个选项,我就会从范围内调用一个函数。我对其进行了调试,它进入了函数,但它永远不会重定向到另一条路线。只有当我按下一个键时它才会改变路线。

我认为这有点奇怪,但我还没有想出如何解决这个问题。我用了

window.location = "#/route";

它有效,但我想使用该path()功能。

有人知道为什么会这样吗?

4

6 回答 6

109

使用无效代码的示例,很容易回答这个问题,但是有了这些信息,我认为最好的是您在 AngularJS 摘要之外调用 $location.path。

尝试在指令上执行此操作scope.$apply(function() { $location.path("/route"); });

于 2012-08-10T19:46:43.893 回答
81

不要忘记注入$location控制器。

于 2012-12-07T10:32:13.660 回答
20

假设您没有使用 html5 路由,请尝试$location.path("route"). 这会将您的浏览器重定向到#/route您想要的位置。

于 2012-08-10T22:38:32.313 回答
15

If you need to redirect out of your angular application use $window.location. That was my case; hopefully someone will find it useful.

于 2015-01-29T14:34:46.203 回答
2

检查您的路由方法:

如果你的路由状态是这样的

 .state('app.register', {
    url: '/register',
    views: {
      'menuContent': {
        templateUrl: 'templates/register.html',
      }
    }
  }) 

那么你应该使用

$location.path("/app/register");
于 2016-07-11T20:47:45.870 回答
0

不知道你的代码很难说。我最好的猜测是,onchange当您从 JavaScript 代码更改文本框值时,事件不会触发。

有两种方法可以做到这一点;第一个是onchange自己调用,第二个是等待文本框失去焦点。

检查这个问题;同样的问题,不同的框架。

于 2012-08-11T00:33:03.320 回答