javascript – sqlite选择的数据未显示为ng-repeat

我从listItems.push调用数据(res.rows.item(i).name);通过ng-repeat到列表.所以我得到了SQLite中存在的名称列表.

这是我的controllers.js

$scope.createList = function () {

    var value1 = document.getElementById("List").value;
    alert(value1);
    var db = $cordovaSQLite.openDB({ name: "Bd_DB.db" });

    var query = "INSERT INTO List (name) VALUES (?)";

    $cordovaSQLite.execute(db, query, [value1]).then(function (res) {

        console.log("insertId: " + res.insertId);
    }, function (err) {
        alert(err);
        console.error(err);
    });

    $scope.getAllLists();

};

$scope.getAllLists = function () {

    var listItems= [];
    var query = "SELECT * FROM List";
    $cordovaSQLite.execute($cordovaSQLite.openDB({ name: "Bd_DB.db" }), query).then(function (res) {

        if (res.rows.item(0).name !="") {

            for (var i = 0; i < res.rows.length; i++) {

              listItems.push(res.rows.item(i).name);



            }
        }

    });

}

我试过了,但它没有显示任何类型的列表.我不知道,我做错了什么.请告诉我正确的代码.谢谢
这是我的Html:

 <div class="bar bar-header">
  <button class="button icon-left ion-chevron-left button-clear button-dark"            ng-click="closeModal()" ></button>
  <h1 class="title">Your List</h1>
  <button class="button" ng-click="createListPopup()"> Create List</button>
</div>

我的待办事项清单

<ion-content>


      <div ng-repeat= "name in listItems">

    {{item.name}}

  </div>


</ion-content>

解决方法:

sqlite事务是同步的,所以在create list中,你必须在execute的成功回调中调用getList:
喜欢:
 $scope.createList = function(){

var value1 = document.getElementById("List").value;
alert(value1);
var db = $cordovaSQLite.openDB({ name: "Bd_DB.db" });

var query = "INSERT INTO List (name) VALUES (?)";

$cordovaSQLite.execute(db, query, [value1]).then(function (res) {

    console.log("insertId: " + res.insertId);
     $scope.getAllLists();

}, function (err) {
    alert(err);
    console.error(err);
});

};

此外,在getAllLists中,无论.execute的状态如何,函数都将结束,因此您必须绑定到在成功回调中设置的变量.

$scope.listItems= [];

$scope.getAllLists = function(){

var query = "SELECT * FROM List";
$cordovaSQLite.execute($cordovaSQLite.openDB({ name: "Bd_DB.db" }), query).then(function (res) {
    $scope.listItems= [];
    if (res.rows.item(0).name !="") {

        for (var i = 0; i < res.rows.length; i++) {

          listItems.push(res.rows.item(i).name);

        }
        $scope.$apply();
    }
}

最后,你必须使用$scope.$apply()将结果反映到视图中.

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能