当前位置: 首页 > 面试题库 >

如何使用UI路由器将对象传递到状态?

竺国兴
2023-03-14
问题内容

我希望能够使用ui-router转换为状态并传递任意对象。

我知道通常$stateParams会使用它,但是我相信此值会插入URL中,并且我不希望用户能够对此数据添加书签。

我想做这样的事情。

$state.transitionTo('newState', {myObj: {foo: 'bar'}});

function myCtrl($stateParams) {
   console.log($stateParams.myObj); // -> {foo: 'bar'}
};

有没有办法在不将值编码到URL的情况下执行此操作?


问题答案:

在0.2.13版中,您应该可以将对象传递到$ state.go,

$state.go('myState', {myParam: {some: 'thing'}})

$stateProvider.state('myState', {
                url: '/myState/{myParam:json}',
                params: {myParam: null}, ...

然后访问控制器中的参数。

$stateParams.myParam //should be {some: 'thing'}

myParam将不会显示在URL中。

资源:

请参阅christopherthielen的评论https://github.com/angular-ui/ui-
router/issues/983
,为方便起见,在此处复制:

christopherthielen:是的,现在应该在0.2.13中起作用。

.state(’foo’,{url:’/ foo /:param1?param2’,params:{param3:null} //
null为默认值});

$ state.go(’foo’,{param1:’bar’,param2:’baz’,param3:{id:35,name:’what’}});

现在,“ foo”中的$
stateParams为{param1:’bar’,param2:’baz’,param3:{id:35,name:’what’}}

网址是/ foo / bar?param2 = baz。



 类似资料:
  • 我尝试使用react路由器将道具传递给组件,如下所示: 我如何做到这一点,但与反应路由器,我如何在组件本身使用它? 我试过这个,但不起作用:

  • 所以我面临的问题是,当我点击Hover Books组件中的链接进入一个新页面时,我可以在其中呈现图书状态,但当我按下它时,什么也没有发生。我知道错误可能在哪里(路由)。如果你能帮我修好它,我将不胜感激。谢谢

  • 问题内容: 是否可以使用需要解析数据的ui-router来建立抽象状态?我需要使用个人资料信息加载页面的上半部分,然后在页面底部添加一个用于加载其他详细信息的子导航。这个想法是,抽象状态每次都会加载配置文件信息,而不管我处于哪个子状态。它似乎不起作用。 例: 问题答案: 和它的 plnkr 因此,在我们的情况下,我们需要在父级中进行此更改 和这个孩子 因此,与其在父母和孩子中使用resolve:{

  • 我在Angular2中有一个组件托管用户表(userTableComponnent)和另一个userDetails组件。单击用户表中的行后,我想路由到用户详细信息。一种实现是仅传递 userId,因此在 userDetails 中,我使用另一个 http get 获取用户的详细信息。但是,这是多余的,因为我在userTableComponent中获取了所有用户信息。因此,我真正需要的是将 User

  • 注意:如果我像其他属性一样添加appState;提交组件中没有appState之类的属性, 如果我用这个; appState传递很好,但这次缺少历史对象,正确的方法是什么?appState只是mobx类实例。 编辑:我找到了一个“奇怪”的解决方案。我将route元素更改为此; 然后,我可以通过访问相同的历史对象在进行此更改之前,我可以将其用作 如果我让它工作正常,但是用这种方式获取这个历史对象很烦

  • 我正在学习React,在遵循几个教程的同时,我想回去学习如何使其成为D.R.Y,因此给出了以下app.js: app.js 我注意到,路线也被复制到我用来声明侧栏标题的路径中: 侧边ata.js: 考虑到代码被复制,我一直在尝试映射路由组件声明中的组件: 尝试1: 但我得到一个错误,并注意到调用组件时它不起作用,在VSC中,我的组件带来了: 它们变灰了。 尝试2: 我想也许我可以在中通过引入组件来