使用Angular,如何添加在更新哈希时触发的手表,或者通过我的应用程序,或者浏览器从URL栏或后退/前进按钮更新URL?
回答
$scope.$watch
接受函数作为第一个参数,所以你可以这样做:
$scope.$watch(function() {
return location.hash
}, function (value) {
// do stuff
});
但我会建议using events,如$routeChangeSuccess
为default router:
$scope.$on("$routeChangeSuccess", function() {})
或$stateChangeSuccess
为ui-router
$scope.$on("$stateChangeSuccess", function() {})
'$ routeChangeSuccess'不会在只有散列发生变化时触发。 –
检查哈希变化的scope.watch建议工作得非常好(当然,ngNewRouter也一样,因为它不依赖于路由器)。 –
$ scope。$ watch()不会在我更改网址哈希 –
如果你没有使用角度$ watch,这也可以。 基本上,你看'hashchange'窗口事件。无论angularJS做什么都是一个包装。例如,
$($window).bind('hashchange', function() {
// Do what you need to do here like... getting imageId from #
var currentImageId = $location.search().imageId;
});
$locationChangeSuccess可能会更好。
$scope.$on('$locationChangeSuccess', function(event, newUrl, oldUrl){
// TODO What you want on the event.
});
当散列发生变化时,根本没有被解雇 –
@PhamHuyAnh它正在为我工作,而我只是在项目中使用了Angular 1.2.21。确保你注入'$ location'。如果你不这样做,它将无法工作散列更改事件观察 –
我也在1.2.x上,这正好适用于散列更改。比$ watch更少的开销 – flybear
location.hash可以通过用户或浏览器的角度或外部内部更新(单击书签中的链接)。如果它在内部更新,则运行$ scope。$ apply()。如果外部事件更新了location.hash,$ watch只会在下一个$ scope后触发。用户在您的应用程序中按下按钮。
如果您希望使用$ watch,请将额外的事件侦听器添加到“hashchange”以调用$ apply,或者将所有功能添加到本地DOM侦听器,并且不要忘记调用$ apply(),因为这是外部电话。
window.addEventListener("hashchange", function(){ $scope.$apply(); }, false);
或者......
window.addEventListener("hashchange", function(){ me._locationHashChanged(); $scope.$apply(); }, false);
- 1. 哈希URL和AngularJS
- 2. 如何在powershell中的哈希表中添加哈希表?
- 3. 如何将哈希和查询参数添加到Angularjs中的url中
- 4. 在angularjs过滤器中添加watch()
- 5. 如何在rails中创建哈希URL?
- 6. 从URL中删除哈希,在无哈希URL加载页面,然后在不重新加载页面的情况下将哈希添加到URL
- 7. 在url中的Ajax哈希
- 8. 如何在哈希中存储哈希哈希?
- 9. 在哈希中添加目录AJAX
- 10. 在哈希(Perl)中添加值
- 11. 在URL中添加哈希参数Rails路由
- 12. 如何阻止任何滑块添加哈希标记到URL
- 13. 如何在CakePHP 3中通过URL发送加密哈希?
- 14. 如何在脚本执行期间创建匿名哈希并将哈希添加到已知哈希中?
- 15. 如何在Java中“加入”哈希表?
- 16. 哈希哈希在Perl中
- 17. 如何在流星铁路由器中为URL添加哈希值?
- 18. 如何在Xcode中添加Watch或Inspect?
- 19. 哈希中的数组中的Ruby访问哈希(并添加新的哈希)
- 20. 如何添加与哈希开始gitignore
- 21. 在Backbone.js中结合哈希和非哈希URL
- 22. 用jQuery在3秒后添加哈希URL和页面标题
- 23. 如何在URL中使用哈希值时获取url params
- 24. 你如何在Clojure的这个哈希表中添加?
- 25. 如何在方法中添加全局哈希值? RoR
- 26. 如何添加重复的条目在C#中哈希表
- 27. Powershell的添加变量在哈希表
- 28. 哈希(#)的URL
- 29. 如何在不改变URL栏的情况下添加HTML哈希链接...?
- 30. 如何在angularjs组件中使用$ watch
不知道的哈希本身,而是我一直检查的方法是'$ rootScope。在$( '$ routeChangeStart',函数(事件,下一,current){});' –