本地存储不刷新后使用Angular2内存数据
我下面这个库工作本地存储并使用webstorage检索它们。然而,刷新以后,我的价值观恢复到旧的,其被存储在内存中,data.service.ts本地存储不刷新后使用Angular2内存数据
bot.component.html:
<tr *ngFor="let bot of bots" routerLink="/botlevelup/{{bot.id}}"> <td>{{bot.id}}</td>
<td>{{bot.lastLevel}}</td>
<td>{{bot.secondLevel}}</td>
</tr>
内存-data.service 。 TS:
import { InMemoryDbService } from 'angular-in-memory-web-api'; export class InMemoryDataService implements InMemoryDbService {
createDb() {
const bots = [
{"id":1,"lastLevel":5},
{"id":2,"lastLevel":5},
{"id":3,"lastLevel":5}
];
return {bots};
}
}
botlevelup.component.html
Bot: {{bot.id}} Last Level: <input [(ngModel)]="bot.lastLevel" />
<button (click)="save()">Save</button>
botlevelup.component.ts
save() { this.storage.store('boundValue', JSON.stringify(bot));
}
我可以看到我更新的值存储在“boundValue”使用控制台日志,和仍在刷新之后出现。
如何在刷新后从'boundValue'而不是原始的in-memory-data.service.ts中检索更新的值?
我想达到的if else:
- 如果有对机器人1和2所做的更改,它将会从 'boundValue'
- 如果没有以BOT 3所做的更改,它将从内存中的data.service中检索。
编辑#1:检索
getBots(): Observable<Bot[]> { this.storage.retrieve('boundValue');
return this.http.get<Bot[]>(this.botsUrl)
.pipe(
catchError(this.handleError('getBots', []))
);
}
回答:
我管理,如果没有更新即可返回基于机器人的更新值,也是机器人的旧值表的代码段。在本地存储机器人的
商店原始值:
段:
export const bots: Bot[] = [ {"id":1,"lastLevel":5},
{"id":2,"lastLevel":5},
{"id":3,"lastLevel":5}
]
var local = JSON.stringify(bots);
this.storage.store('localstore', local);
创建值更新本地存储中,这个问题是boundValue存储所有的变化。
this.storage.store('boundValue', JSON.stringify(bot));
检索localstore和boundValue值,检查是否有更新boundValue与如有更新替换localstore。
var newValues = this.storage.retrieve('boundValue'); var oldValues = this.storage.retrieve('localstore ');
如果没有新值,则返回旧值。我使用这些值的变量 '数组':
if(boundValue == null){ var array = $.parseJSON(oldValues);
}
否则,在阵列中更新旧值:
else{ var valueUpdate = $.parseJSON('[' + newValues + ']');
var array = $.parseJSON(oldValues);
for (var i=0; i<array.length; i++){
for (var m=0; m<valueUpdate.length; m++){
if (valueUpdate[m].id == array[i].id){
array[i] = valueUpdate[m];
break;
}
}
}
}
最后:
this.bots = array;
它可能不是最好的方式,但这是我能想出的东西。感谢所有关于我的问题的评论,这些评论让我了解如何做到这一点。
以上是 本地存储不刷新后使用Angular2内存数据 的全部内容, 来源链接: utcz.com/qa/260791.html