0
現在、Ionic 2モバイルアプリケーションを開発中です。私はAngularFire2を使ってFirebaseから入手したアイテムのリストを持っています。リストに並べ替え機能を実装しました。アイテムのインデックスをリストに保存してFirebaseに送信して、インデックスを使用してユーザーの設定に基づいてアイテムの優先順位を付けることができるようにしたいと考えています。私はこれを行う方法がありますか?私はFirebaseに「インデックス」を送ろうとしましたが、それは仕事をしませんでした。イオン2:リストの各項目のインデックスを取得し、Firebaseに保存します
HTML:
<ion-list reorder="true" (ionItemReorder)="reorderItems($event)">
<ion-item *ngFor="let item of categories; let i = index;">
{{i+1}}. {{item.name}}
</ion-item>
</ion-list>
</ion-content>
活字体:
export class ManageFavouritesPage {
fireAuth: any;
items: any;
categories: any;
categorykey: any;
constructor(public navCtrl: NavController, public af: AngularFire, private toastCtrl: ToastController, public authData: AuthData) {
let userid = this.authData.getID();
this.items = af.database.list(`/users/${userid}/favourites`)
.subscribe(data => this.categories = data)
}
reorderItems(indexes) {
let element = this.categories[indexes.from];
let element2 = this.categories[indexes.to].$key;
this.categories.splice(indexes.from, 1);
this.categories.splice(indexes.to, 0, element);
let userid = this.authData.getID();
this.items = this.af.database.object(`users/${userid}/favourites/${element2}`).update({priority: indexes.to});
}
}
助けてくれてありがとう! Firebaseの優先順位を更新しているようです。しかし、私は時間の半分しか動かないことを知りました。時々、アイテムを並べ替えると、最初の注文に戻ります。 –
更新が完了する前に並べ替えを行うと、問題が発生する可能性があります。 'update'は約束を返します。それが解決するまで再注文するべきではありませんが、イオニックがそれを強制するかどうかは別の問題です。 – cartant
よろしく!編集/完了ボタンを追加すると効果がありますか?完了ボタンをクリックすると更新されます。 –