使用UI路由器访问从解析函数调用的服务中新状态的$stateParams
Access $stateParams of new state in service called from resolve function with UI Router
有没有一种方法可以访问您从解析函数中调用的服务转换到的状态的$stateParams
?对于ngRoute
,您将使用$route.current.params
。正如这个最小的plunk所示,服务只看到你要离开的状态:
http://plnkr.co/edit/QpwgAj?p=preview
当$stateParams
被直接注入到解析函数中时,我得到了新的$stateParams
,但这些值仍然落后于服务中的一个路由。
我错过了什么?
您不能将传入参数注入服务本身,但您可以将它们传递给服务中的函数(或者您也可以将它们分配到服务中的属性)。
这个plunker展示了如何将它们传递给一个函数,而函数又将它们存储到服务中的一个属性中。使用"dummy"属性应该不会有什么坏处,但它有点难看。:)
将参数作为解析属性传递给控制器,然后从控制器构造函数将它们分发给服务,这可能更有意义。。。那就是我要做的。
在状态提供者中的解析函数中
resolve: {
something: function(MyService, $stateParams){
return MyService.doSomethingWithParam($stateParams.someParameter);
}
}
在您的服务
myService = angular.module('myService', [])
.factory('MyService', function() {
var myServiceInstance;
myServiceInstance.doSomethingWithParam= function(param){
//...store or do something with your state param here and return result
};
return myServiceInstance;
});
相关文章:
- 单击我网站中的链接时打开新选项卡,保持当前选项卡处于活动状态
- 美国地图插件,具有状态数据/悬停功能的新按钮
- 广告拦截处于活动状态,然后不要打开超链接到新标签
- CKEditor新实例始终处于卸载状态
- CRM 2013 - 事件解决 - 检索新的状态原因
- 在加载新页面时保持选项卡永久处于活动状态
- 在 React 中向组件添加新输入并跟踪状态
- 在网络套件中添加新的交易状态
- 按键触发 的 CSS 更改,在新选项卡中打开链接,然后回滚到以前的 CSS 状态
- 如何推送到实际对象的数组最后状态,清除它并像新对象一样单独编辑
- 当用户单击子菜单并在新页面中打开时,子菜单将保持活动状态
- Ajax 形式:新的重置状态
- 打开新页面时保持弹出窗口打开状态
- 在导航到新页面时,使 Chrome 扩展程序弹出窗口保持打开状态
- 具有新状态的 Redux 调度操作和化简器
- 在 Couchdb ( 虹膜沙发 ) POST 请求中添加新文档失败,状态为 500
- 使用UI路由器访问从解析函数调用的服务中新状态的$stateParams
- 如何创建与父窗口状态相同的新窗口
- 我可以只返回状态对象的一部分而不是整个状态对象的新副本吗
- 如何从减速器删除条目/如何返回一个新的状态?(React / Redux)