Angular2session存储后session存储设置当前值未修改
Angular 2 sessionStorage after session storage set the current value not modified
我需要一些关于session存储问题的帮助。
当我从 Dropbox 更改值时,它会在页面上更改,但在我单击另一个页面并返回后,该值未保存。所以我做了什么:
handleOnItemsPerPage(itemsPerPage) {
sessionStorage.setItem('itemsPerPage', JSON.stringify(itemsPerPage));
this.onFilter.emit({
items: this.cachedItems,
field: 'type',
type: this.selectedCategory,
query: this.searchQuery,
itemsPerPage: parseInt(itemsPerPage, 10),
sortAsc: this.isAscSort,
page: this.page
});
}
当我更改值时,我将其保存在 session 存储中,因此当我回来显示它时。所以在我的 ngInit 中:
ngOnInit() {
this.sessionStorage = JSON.parse(sessionStorage.getItem('itemsPerPage'));
}
并且在 html 中:
<app-pager [pagedItems]="pagedItems"
[itemsPerPage]="sessionStorage ? sessionStorage : itemsPerPage"
[page]="page"
(onPageChange)="handleOnPageChange($event)"
(onItemsPerPage)="handleOnItemsPerPage($event)">
</app-pager>
问题是第一次工作正常,如果我更改值并返回页面,它会应用更改,但是在我再次更改值后,它不会更改为当前值,但是session 一个。
如何解决这个问题?
谢谢。
它只会在重新加载时发生变化,原因很简单,然后 ngOnInit 被触发。
如果您想更改该值,则必须更改它并存储该值。
sessionStorage.setItem('itemsPerPage', JSON.stringify(itemsPerPage));
this.sessionStorage = itemsPerPage;
如果您想知道为什么双向绑定不起作用,请尝试:
let a = 10;
let b = JSON.parse(JSON.stringify(a));
通常如果你做let b = a;
然后改a b就会改成,但是现在你可以改a而b不会改。我们称之为深拷贝。
我需要一些关于session存储问题的帮助。
当我从 Dropbox 更改值时,它会在页面上更改,但在我单击另一个页面并返回后,该值未保存。所以我做了什么:
handleOnItemsPerPage(itemsPerPage) {
sessionStorage.setItem('itemsPerPage', JSON.stringify(itemsPerPage));
this.onFilter.emit({
items: this.cachedItems,
field: 'type',
type: this.selectedCategory,
query: this.searchQuery,
itemsPerPage: parseInt(itemsPerPage, 10),
sortAsc: this.isAscSort,
page: this.page
});
}
当我更改值时,我将其保存在 session 存储中,因此当我回来显示它时。所以在我的 ngInit 中:
ngOnInit() {
this.sessionStorage = JSON.parse(sessionStorage.getItem('itemsPerPage'));
}
并且在 html 中:
<app-pager [pagedItems]="pagedItems"
[itemsPerPage]="sessionStorage ? sessionStorage : itemsPerPage"
[page]="page"
(onPageChange)="handleOnPageChange($event)"
(onItemsPerPage)="handleOnItemsPerPage($event)">
</app-pager>
问题是第一次工作正常,如果我更改值并返回页面,它会应用更改,但是在我再次更改值后,它不会更改为当前值,但是session 一个。
如何解决这个问题? 谢谢。
它只会在重新加载时发生变化,原因很简单,然后 ngOnInit 被触发。 如果您想更改该值,则必须更改它并存储该值。
sessionStorage.setItem('itemsPerPage', JSON.stringify(itemsPerPage));
this.sessionStorage = itemsPerPage;
如果您想知道为什么双向绑定不起作用,请尝试:
let a = 10;
let b = JSON.parse(JSON.stringify(a));
通常如果你做let b = a;
然后改a b就会改成,但是现在你可以改a而b不会改。我们称之为深拷贝。