Javascript 安圭拉酒店;UI路由器:$state.go()和$location.path()为什么不能在交互控制台中工作?
请看这个plunker: 它基本上是UI路由器文档中的演示代码。为了以编程方式测试状态之间的导航,我制作了使用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
$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');