【问题标题】:angularjs - How to select and delete multiple rows sqliteangularjs - 如何选择和删除多行 sqlite
【发布时间】:2017-07-01 15:54:44
【问题描述】:

我有这个应用程序,我可以在其中拍照并将图像 URL 保存到 sqlite 中。 我可以添加、删除和显示所有这些,现在我正在尝试从带有 ids 的数据库中选择多个(图像)并删除选定的那些

$scope.selected = [];
    $scope.deleteMultiple = function(){
        var selectedImages = [];
    angular.forEach($scope.selected, function(isSelected, index) {
            if(isSelected)
            selectedImages.push($scope.images[$index])
            $scope.delete(selectedImages.id)
        })
    console.log(selectedImage)
        }


 $scope.add = function(path) {             
            if (imagesP != null) {          
                $cordovaSQLite.execute(db, "INSERT INTO imageTable (images) VALUES(?)", [path] );        
            }        
            alert("Inserted.");      
        },
        function(e) {        
            alert(e);      
        };

    $scope.delete = function(id) {                
            if (id != '') {          
                $cordovaSQLite.execute(db, "DELETE FROM imageTable WHERE id=?", [id]);        
            }        
            alert("Deleted.");        
            $scope.ShowAllData();      
        },
        function(e) {        
            alert(e);      
        };    

      
 $scope.getImgIDbyName = function(name) {

    console.log('[getImgIDbyName] - get image with name:  ' + name );
    var sql = "SELECT * FROM imageTable WHERE image = '" + name + "';";
    console.log(sql);
    $cordovaSQLite.execute(db,
        sql
    ).then(
        function(res) {
            if (res.rows.length > 0) {
                if (res.rows.length > 1) {
                    console.log('[getImgIDbyName] - OOPS more than 1 image returned!!!!  ' + name );
                } else {
                    $scope.delete (res.rows.item(0).id);
                }
            } else {
                console.log('[getImgIDbyName] - no image found with name:  ' + name );
            }
        },
        function(error) {
            alert("error occured: " + error.message);
        }
    );



}

HTML

<div ng-repeat="image in images " > <!-- container -->

 <div>

    <img ng-src="{{image.image}}" style="width: 70%; height: 80%;"  ng-class="{'selected-image': selected[$index]}" ng-click="selected[$index] = !selected[$index] />

 <div  ng-click="getImgIDbyName(image.image)">
    <div style="font-size:2rem;margin:0.5rem 0 1rem" > DELETE IMAGE (ID:{{image.id}}) </div>
 </div>
     </div>


</div>      

    </ion-scroll>

【问题讨论】:

  • 描述问题。“它不起作用”不是问题陈述。
  • 什么是“现在我正在尝试选择多行”,如何?
  • @ItsikMauy 有多个图片 URL ,然后删除选中的那些
  • @georgeawg 我正在尝试从 sqlite 数据库中选择多行(图像),然后删除选定的行

标签: angularjs sqlite cordova ionic-framework


【解决方案1】:

下面的代码应该像你期望的那样执行多次删除:

$scope.selected = [];
    $scope.deleteMultiple = function(){
        var selectedImages = [];
        var selectIDs = $scope.selected.map(function(x) {return x +',';};
        console.log(selectedImages.selectIDs)
        $scope.delete(selectedImages.selectIDs)
        }

$scope.delete = function(ids) {                
            if (ids != '') {          
                $cordovaSQLite.execute(db, "DELETE FROM imageTable WHERE id IN (?)", [ids]);        
            }        
            alert("Deleted.");        
            $scope.ShowAllData();      
        },

这篇文章描述了 sqllite 的“IN”子句。 https://www.techonthenet.com/sqlite/in.php

【讨论】:

  • 谢谢,这就是我想要的。我会测试它并回复你
  • 如何连接到dom并替换旧函数... getImgIDbyName(image.image)
  • 我正在根据这个例子工作plnkr.co/edit/XxE2cYRvPBYKl37erTax?p=preview
  • 如果能解决您的问题,请将此回复标记为答案。
  • 完成了,你能帮我实现html的功能吗,谢谢
猜你喜欢
  • 2023-03-23
  • 1970-01-01
  • 2017-12-08
  • 2014-02-28
  • 2012-07-30
  • 1970-01-01
  • 1970-01-01
  • 2013-07-30
  • 2014-07-24
相关资源
最近更新 更多