我在我的应用程序中使用了UI-Router,并且我有一个状态参数,它对于它成为url的一部分并不真正有意义。根据{{3}}我创建参数而不在状态url中指定它,如下所示:
.state('contact', {
url: "/:contactId/contact",
params: {
otherParam: null
},
templateUrl: 'contacts.html'
})
这是按预期工作的,但我注意到如果我手动刷新页面,参数将重置为默认的null。
例如,如果我重定向到这样的状态:
$state.go('contact', {contactId: 42, otherParam: 11});
一切都按预期工作($stateParams.contactId
为42,$stateParams.otherParam
为11)
但是,一旦我刷新页面,$stateParams.contactId
仍为42,但$stateParams.otherParam
已设置回null
。是否可以在浏览器刷新期间保留此非URL参数?
答案 0 :(得分:2)
您的问题是您希望保留特定于浏览器会话的应用程序状态,对吗?浏览器配备了相应的机制,我建议您查看local storage or session storage以解决您的问题,并在州声明中的resolve方法中检索所需的信息。
答案 1 :(得分:1)
这有可能,但你不应该这样做。如果它在刷新时应该持续存在,那意味着根据定义,它应该在URL中,因为您希望它是资源的一个组件。
如果你真的想破坏惯例并且这样做,你需要做一些事情来保存window.name
中的数据并在重新加载时检索它。这绝对是一种反模式,任何人都可以访问这些数据,但就像我说的那样,它是可能的。