Javascript 安圭拉酒店;UI路由器:$state.go()和$location.path()为什么不能在交互控制台中工作?

Javascript 安圭拉酒店;UI路由器:$state.go()和$location.path()为什么不能在交互控制台中工作?,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,请看这个plunker: 它基本上是UI路由器文档中的演示代码。为了以编程方式测试状态之间的导航,我制作了使用$state.go(stateName)和$location.path(stateUrl)的控制器函数,它们都可以正常工作 控制器的代码: myApp.controller('mainController', ['$scope', '$state', '$location', function($scope, $state, $location) { $scope.usingSt

请看这个plunker:

它基本上是UI路由器文档中的演示代码。为了以编程方式测试状态之间的导航,我制作了使用
$state.go(stateName)
$location.path(stateUrl)
的控制器函数,它们都可以正常工作

控制器的代码:

myApp.controller('mainController', ['$scope', '$state', '$location',  function($scope, $state, $location) {
  $scope.usingState = function() {
    console.log('usingState() called');
    $state.go('state2');
  };
  $scope.usingLocation = function() {
    console.log('usingLocation() called');
    $location.path('/state2');
  };
}]);
但是,在交互式控制台(开发工具)中,它不起作用。如果我这样做:

$state = angular.element(document).injector().get('$state');
$state.go('state2');

什么也没发生。为什么?


我希望能够在交互式控制台中进行快速测试…

您提到的上述代码似乎正在控制台中运行。在plunker中,您无法从文档中获取
injector
对象,因为plunker在其加载位置的
内部运行代码

要测试功能,请打开UI路由器。在控制台中输入以下代码并观察状态转换:

angular.element(document).injector().get('$state').go('about');
更新:

在您提供的plunker中,我已将angular版本1.1.5更改为1.2.0(在1.1.5之后发布的版本),并且似乎一切正常。以下是和的更改日志,这可能会帮助您跟踪它在以前版本中不起作用的原因


。希望这有帮助

我使用的功能是“在单独的窗口中启动预览”,它不使用iframe。实际上,我很好地使用了注入器,只需执行
angular.element(document).injector().get(“$state”)
即可提供$state服务。顺便说一句,我在我的机器上发现了这个问题,只是在plunker中复制了它来显示。@Quentin更新了答案!
angular.element(document).injector().get('$state').go('about');