javascript - 使用 ui-sref 解析处于 ui-router 状态的对象

标签 javascript angularjs angular-ui-router

在 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/

相关文章:

javascript - Knockout JS 并在 textInput 更改时执行 $.ajax

javascript - 指令中的编译函数无法正确评估

javascript - 实现 Angular ui-router 而不是 ng-router

javascript - jQuery - 删除()不工作

javascript - 为什么这个表达式在 javaScript 中返回 2?

angularjs - ng-repeat 中的按钮以更新表单中的输入

angularjs - 如何调试空白页错误(由 UI-Router 引起)?

angularjs - angular-ui-router 嵌套 View 和 "RangeError: Maximum call stack size exceeded"

javascript - 我们可以将谷歌地图静态URL字符长度增加到最多五万个字符吗

javascript - 如何通过Angular方法返回数据库结果