微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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()将结果反映到视图中.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐