【发布时间】:2018-11-25 08:24:42
【问题描述】:
我需要在没有经典数据库的 Ionic 3 应用程序中保存一些用户名(输入)和图片(代码中未显示另一个按钮,但我认为逻辑将相同)(认为我将使用 base 64图片基于设备中的相机)。然后我应该检索它们以使用它创建离子卡配置文件。
实际上,每次我运行 loadUser() 函数时,它只会检索我最后一个用户名,但我想保存更多。即使我进入 chrome DevTools/IndexedDB,我也只能看到一个 key 和 value 已保存。
我需要像数据库一样持久化这些键和值。
使用带有 NgModel 的输入和 2 个按钮(一个用于设置数据,一个用于获取数据)我试图在我的 Ionic 3 应用程序(没有 Sql Lite)中保存一些用户名,但我看到 storage.set 只接受字符串值。我的想法是使用JSON.parse 来检索保存在数组中的数据,但值在开始时是字符串,所以如果您有任何想法,请告诉我。
Bellow 是我尝试过的代码,但出现错误:“core.js:1449 ERROR Error: Uncaught (in promise): SyntaxError: Unexpected token d in JSON at position 0
SyntaxError:JSON 中位置 0 的意外标记 d
在 JSON.parse()"
PS:如果你还不够清楚,请随时问我在附近一段时间。 这是我的代码:
参数.ts
export class ParametrePage {
key: string = 'username';
inputext: string;
inputextGroup = [];
constructor(
public navCtrl: NavController,
public navParams: NavParams,
private storage: Storage
) {}
saveUser() {
// set a key/value
this.storage.set(this.key, this.inputext);
}
loadUser() {
// Or to get a key/value pair
this.storage.get(this.key).then(val => {
this.inputtextGroup = JSON.parse(val);
console.log('You name is', val);
});
}
}
参数.html:
<h6>Add a profilname</h6>
<div class="form-container">
<div class="input-container">
<p class="diName">Name :</p>
<ion-input [(ngModel)]="inputext" class="daInput" type="text"></ion- input>
</div>
<button class="charlotte-button addUser" ion-button icon-left
(click)="saveUser()">
<ion-icon class="picto picto-reply"></ion-icon>
Add a user
</button>
<button class="charlotte-button addUser" ion-button icon-left
(click)="loadUser()">
<ion-icon class="picto picto-reply"></ion-icon>
Load user
</button>
【问题讨论】:
-
Hey Emile,所以您当前的代码说键和值都是字符串(键:字符串,输入文本:字符串)。分配没有任何 JSON.parse 的值应该没有问题。
-
所以你是说在你的应用中你可以有 username1、username2、username3 等等,你想使用 ionic Storage 来持久化他们的名字?
-
@SergeyRudenko 是的,没错,用户将使用输入保存他们的用户名
-
我更新了答案,但我认为我仍然不清楚您的用例。我们在这里讨论的是在特定用户的机器上运行的客户端代码。持久性也是“本地的”(离子存储)。所以我希望你不要指望这是一个网络服务,用户实际上可以从他们的本地客户端一起修改数据?
-
不不,它只是本地的(仅在 Ipad 上),并且应用程序的这一部分有任何 wheb 服务
标签: typescript ionic-framework ionic3 ionic-storage