angular$ location.path不工作
我有一个类似这个问题,但不同。
在这里,我正在尝试为window.postMessage
处理程序添加一个事件侦听器。
app.run(function ($location, $window, $rootScope) { $window.addEventListener('message', function(e) { $location.path("/abc"); console.log($location.path()); // this prints "/abc" as expected $rootScope.$apply(); // this has no effect $scope = angular.element(document).scope(); // this is the same as $rootScope $scope.$apply(); // so this also has no effect }); });
$location.path
不被Angular识别。
另一个问题说,我应该在范围上调用$apply()
,但唯一可用的范围是$rootScope
并且调用$apply()
似乎不起作用。
答案的评论表明,范围可以得到
$scope = angular.element(document).scope()
但是这给了我$rootScope
,这是行不通的。
如何得到angular度来注册$location.path()
的更改? 有没有更好的方式来注册一个message
callback的方式,我可以改变path?
你应该像$apply()
方法那样在函数中运行expression式
app.run(function ($location, $window, $rootScope) { $window.addEventListener('message', function(e) { $rootScope.$apply(function() { $location.path("/abc"); console.log($location.path()); }); }); });
请参阅文档 – ng。$ rootScope.Scope 。
如果您想提高可testing性,请使用$console
而不是$console
来注入该对象。
接受的解决scheme不是适当的方法来做到这一点。 理想情况下,你不应该干扰摘要循环($ apply())。
根据我的最好的方法是从MainController调用$ location.path()。 使用$emit - $on
将其发送到MainController并从那里调用$ location.path函数。 它将完全redirect您,而不会干扰摘要循环。 我希望这可以帮助别人。
没有$超时的解决scheme。
在使用$ state.go之前,防止redirect到默认状态
event.preventDefault(); $state.go('root');
我有同样的问题,我的错误是,我在我的项目上严重运行ng-click指令。
不好的例子:
<a **href="#"** ng-click="myFunctionChangeLocationPath()">...
例子井:
<a ng-click="myFunctionChangeLocationPath()">...
所以你可以纠正这个问题!
- Access-Control-Allow-Origin不允许$ http.get,但$ .ajax是
- 如何检查一个指令的方法参数是否在AngularJS中指定?
- npm / yeoman安装generator-angular没有sudo
- 错误:预计`2015-05-29T19:06:16.693209Z`为date – Angular
- 如何让AngularJS绑定到A标签的title属性?
- 计算AngularJS ng-repeat中重复元素的总和
- AngularJS – 在ng-repeat中过滤未定义的属性?
- 如何在AngularJS中设置Cookie的到期date
- Angularjs $ state在新标签中打开链接