在 Angular Controller 和 ui-sref 链接中有非常大的 JSON 对象,我想将这个对象传递给 ui-view 中的模板 Controller 。
我知道,我可以使用 ui-sref 将参数传递给 state,但我不希望这个对象出现在地址栏中。另外,我知道我们可以在状态中使用“resolve”选项,但我找不到如何将数据从链接传递到“resolve”函数。
更新
如果我这样使用 $state.go:
路由器配置
state('social.feed.detailed',
url: '/:activityID'
templateUrl: 'views/social/detailedactivity.html'
)
在模板中
<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>
在 Controller 中
$scope.SOC_FEED_CTRL.goToDetailed = (activity) ->
# here activity is real object
$state.go('social.feed.detailed', {'activityID':activity.id, 'activity':activity})
然后 'activity' 参数根本没有解析。
更新 2
如果我将路由配置修改为:
state('social.feed.detailed',
url: '/:activityID?activity'
templateUrl: 'views/social/detailedactivity.html'
)
那么activity就是字符串“[object Object]”
最佳答案
可以使用ui-router
模块的$state.go
函数调用手动传入$stateParams
不会出现在网址。因此,与其使用 ui-sref
属性,不如设置一个 ng-click
处理程序来调用 $state.go(STATE,{'param' :JSON})
.
然后,将$stateParams
注入(inject)到您的 Controller 中,并读取
$stateParams.param
取回您的 JSON 对象。
关于javascript - 使用 ui-sref 解析处于 ui-router 状态的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21704880/