用ui-sref解析ui-router状态下的对象

mkr*_*hin 8 javascript angularjs angular-ui-router

在Angular控制器和ui-sref链接中拥有非常大的JSON对象我希望将此对象传递给将在ui-view中的模板控制器.
我知道,我可以使用ui-sref将参数传递给state,但我不希望这个对象出现在地址栏中.另外,我知道我们可以在状态中使用'resolve'选项,但我找不到如何从链接传递数据到'resolve'功能.

更新
如果我使用$ state.go:
路由器配置

state('social.feed.detailed',
     url: '/:activityID'
     templateUrl: 'views/social/detailedactivity.html'
)
Run Code Online (Sandbox Code Playgroud)

在模板中

<ums-social-activity ng-repeat="record in SOC_FEED_CTRL.records"
     activity="record"
     ui-sref-active="selected"
     ng-click="SOC_FEED_CTRL.goToDetailed(record)">
</ums-social-activity>
Run Code Online (Sandbox Code Playgroud)

在控制器中

$scope.SOC_FEED_CTRL.goToDetailed = (activity) ->
     # here activity is real object
     $state.go('social.feed.detailed', {'activityID':activity.id, 'activity':activity})
Run Code Online (Sandbox Code Playgroud)

然后'活动'参数根本没有解决.
更新2
如果我将路由配置修改为:

state('social.feed.detailed',
    url: '/:activityID?activity'
    templateUrl: 'views/social/detailedactivity.html'
)
Run Code Online (Sandbox Code Playgroud)

然后活动是字符串"[object Object]"

cit*_*ave 2

您可以使用ui-router模块的$state.go函数调用来手动传入$stateParams不会出现在 URL 中的内容。因此,ui-sref您无需使用该属性,而是设置一个ng-click调用$state.go(STATE,{'param':JSON}).

然后,注入$stateParams你的控制器,并阅读

$stateParams.param
Run Code Online (Sandbox Code Playgroud)

取回您的 JSON 对象。

  • 我也尝试过,数据总是会转换为“[object Object]”,因此 `state.go()` 不是传递对象的可行方法,除非您想对对象进行字符串化,然后在另一端解析它。 (2认同)
  • 那么,从这个评论线程中得出的结论是,这个方法行不通?如果是这样,我们可以取消选中它吗,@mkrakhin? (2认同)