Checkbox 如何使用ionic 3中的复选框删除多个项目

Checkbox 如何使用ionic 3中的复选框删除多个项目,checkbox,ionic3,Checkbox,Ionic3,我想知道如何使用复选框从Ionic 3的列表中删除多个项目,这是我的代码,在delete()函数中,我不知道如何仅排除使用复选框选中的产品。我原以为这会奏效,但没有删除任何内容。如果有人能帮助我,谢谢 produto.html <ion-item-sliding *ngFor="let produto of produtos"> <ion-item> <input [(ngModel)]="modelo[produto.id]" valu

我想知道如何使用复选框从Ionic 3的列表中删除多个项目,这是我的代码,在delete()函数中,我不知道如何仅排除使用复选框选中的产品。我原以为这会奏效,但没有删除任何内容。如果有人能帮助我,谢谢

produto.html

<ion-item-sliding *ngFor="let produto of produtos">
      <ion-item>
        <input [(ngModel)]="modelo[produto.id]" value="{{produto.id}}" name="modelo" type="checkbox" ng-checked="produto.checked">{{produto.id}}
        <h1> {{ produto.barra }}</h1>
        <h3> {{ produto.deposito_nome }}</h3>
        <h3> {{ produto.quantidade }}</h3>
        <!--<h2 class="price">{{ produto.preco | currency:'BRL':true }}</h2> -->
      </ion-item>

    </ion-item-sliding>
  </ion-list>
  <button ion-button (click)="excluir()">Excluir Todos</button>


import { Component } from '@angular/core';
import { DatabaseProvider } from '../../providers/database/database';
import { SQLiteObject } from '@ionic-native/sqlite';
import { NavController, NavParams, ToastController } from 'ionic-angular';
import { InventarioProvider, Product } from '../../providers/inventario/inventario';
import { RestProvider } from '../../providers/rest/rest';
import { HomePage } from '../home/home';


@Component({

  selector: 'page-inventario',
  templateUrl: 'inventario.html',
})
export class InventarioPage {

    produtos: any[] = [];
      modelo: any[] = [];

    this.model = new Product();

        if (this.navParams.data.id) {
          this.inventarioProvider.get(this.navParams.data.id)
            .then((result: any) => {
              this.model = result;
            })
        }
      }
      ionViewDidEnter() {
        this.getAllProdutos();
      }

      getAllProdutos() {
        this.inventarioProvider.getAll()
          .then((result: any[]) => {
            this.produtos = result;
          });
      }

      excluir() {
         this.produtos.forEach(function (produto) {
  if (produto.checked) {
    this.modelo[produto.id] = produto.checked;
    return this.dbProvider.getDB()
      .then((db: SQLiteObject) => {
        let sql = 'delete from inventario where id = ?';
        let data = [produto.id];
        return db.executeSql(sql, data)
      })
  }
})

{{produto.id}
{{produto.barra}}
{{produto.deposito_nome}}
{{produto.quantidade}}
不包括待办事项
从'@angular/core'导入{Component};
从“../../providers/database/database”导入{DatabaseProvider};
从'@ionic native/sqlite'导入{SQLiteObject};
从'ionic angular'导入{NavController,NavParams,ToastController};
从“../../providers/inventario/inventario”导入{InventarioProvider,Product}”;
从“../../providers/rest/rest”导入{RestProvider};
从“../home/home”导入{HomePage};
@组成部分({
选择器:“页面发明”,
templateUrl:'inventario.html',
})
导出类发明页面{
produtos:any[]=[];
modelo:any[]=[];
this.model=新产品();
if(this.navParams.data.id){
this.inventarioProvider.get(this.navParams.data.id)
。然后((结果:任意)=>{
这个模型=结果;
})
}
}
ionViewDidEnter(){
this.getAllProdutos();
}
getAllProdutos(){
this.inventarioProvider.getAll()
。然后((结果:any[])=>{
this.produtos=结果;
});
}
excluir(){
this.produto.forEach(函数(produto)){
如果(产品已选中){
this.modelo[produto.id]=produto.checked;
返回此.dbProvider.getDB()
.然后((db:SQLiteObject)=>{
让sql='从inventario中删除,其中id=?';
让数据=[produto.id];
返回db.executeSql(sql,数据)
})
}
})
}
}

嘿,我从未使用过SQlite,但是假设代码的其他部分包括db处理都可以工作,那么您需要在delete方法中执行以下操作:

excluir() {
    // create comma separated list of products to be deleted from db:
    const toBeDeleted = this.produtos.filter(produto => produto.checked === true);
    // now execute db script to delete multiple products:
    return this.dbProvider.getDB().then((db: SQLiteObject) => {
        // here i might be wrong but you should be able to delete all items with ids in one operation, don't use loop as it may get expensive:
        db.delete("inventario", "id IN (?)", toBeDeleted.join())
        db.close()
    }).then(() => {
        // now do the modelo step (not sure what is this though in your case):
        toBeDeleted.forEach(produto => {
            this.modelo[produto.id] = produto.checked;
        })
        // finally update product array by filtering out deleted items:
        this.produtos = this.produtos.filter(produto => produto.checked === false);
    })
}
请注意,我不完全确定如何使用SQlite删除多个项目,但我希望您了解这一部分。我认为您可能需要这样做:

db.delete("inventario", "id IN (" + toBeDeleted.join() + ")", null)

那么,您想从列表和数据库中删除项目吗?我想删除标有bd复选框的项目