使用ui-router,可以将$ state或$ stateParams注入到控制器中,以访问URL中的参数。然而,通过$ stateParams访问参数只暴露属于由访问它的控制器管理的状态的参数及其父状态,而$ state.params具有所有参数,包括任何子状态下的参数。
给定以下代码,如果我们直接加载URL http:// path / 1 / paramA / paramB,这是它在控制器加载时的方式:
$stateProvider.state('a',{ url: 'path/:id/:anotherParam/',controller: 'ACtrl',}); $stateProvider.state('a.b',{ url: '/:yetAnotherParam',controller: 'ABCtrl',}); module.controller('ACtrl',function($stateParams,$state) { $state.params; // has id,anotherParam,and yetAnotherParam $stateParams; // has id and anotherParam } module.controller('ABCtrl',and yetAnotherParam $stateParams; // has id,and yetAnotherParam }
问题是,为什么会有区别?有没有最佳实践指南围绕什么时候和为什么你应该使用,或避免使用它们中的任何一个?
文档在此重申您的发现:
https://github.com/angular-ui/ui-router/wiki/URL-Routing#stateparams-service
原文链接:https://www.f2er.com/angularjs/147082.html如果我的内存服务,$ stateParams被引入晚于原来的$ state.params,似乎是一个简单的帮助注入器,以避免连续写$ state.params。
我怀疑有什么最佳实践指南,但情境赢得了我。如果你只是想访问接收到的url参数,然后使用$ stateParams。如果你想知道关于状态本身更复杂的事情,使用$ state。