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