【发布时间】:2018-06-01 04:15:58
【问题描述】:
我的网站上有两个页面。一个是EventList,另一个是EventDetail。当我单击 EventList 页面中的任何事件时,它会将我重定向到 EventDetail 页面。我用 Event 的 EventId 来获取详细信息并在 EventDetail Page 中填充相应的数据。当我第一次这样做时,这发生得很好。当我刷新页面时,Event 的 EventId 就消失了。我正在使用 ui-router 将 EventId 作为状态参数传递给 EventDetail 页面。
StateRouter.JS
app.config(function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('home.eventlist', {
url: '/eventlist',
views: {
'homedetailview':
{
templateUrl: 'EventsPages/ListEvent.html',
controller: 'ctrlEventList'
}
}
})
.state('home.eventlist.eventdetail', {
url: '/eventdetail',
params: { paramOne: "defaultValueOne" },
views: {
'homedetailview@home':
{
templateUrl: 'EventsPages/AddEvent.html',
controller: 'ctrlEventContent',
}
}
})
})
EventList.HTML
<form class="form-main">
<div class="div-main">
<div class="gridBigStyle" ui-grid="gridEventList" ui-grid-pagination>
</div>
</div>
</form>
EventListController.JS
myApp.controller("ctrlEventList", ['$scope', function ($scope) {
$scope.gridEventList = {
data: 'eventlistdata',
columnDefs: [
{ field: 'SiteEventNumber', displayName: 'Event Number' },
{ field: 'EventName', displayName: 'Event Name' },
{ name: 'actions', displayName: 'Actions', cellTemplate: $scope.actions}
]
}
$scope.actions =
'<a ui-sref=".eventdetail({paramOne:row.entity.EventId})"></a>';
}])
EventDetailController.JS
myApp.controller("ctrlEventContent", ['$scope', '$stateParams', function ($scope, $stateParams) {
alert($stateParams.paramOne);
}])
当我刷新页面时,它会将警报显示为“defaultValueOne”,这被称为 StateParams 的默认值。
我搜索了网络,发现本地存储可以解决这个问题,但我不知道如何在这里实现以及与其他选项相比有什么缺点。如果在此提供工作示例,那就太好了。
【问题讨论】:
-
在你的路由器中试试 url: '/eventdetail?paramOne'
-
我不想通过在 url 中公开让我的参数值对最终用户可见。
标签: javascript angularjs angular-ui-router