【问题标题】:Web sql/Sql Lite and Binding to Row in AngularWeb sql/Sqlite 和绑定到 Angular 中的行
【发布时间】:2015-03-31 23:13:10
【问题描述】:

这是一个 phonegap angular 应用程序。我原以为绑定到数据库查询返回,result.rows 在我的情况下是可能的,但似乎不是。我可以让它工作的唯一方法是使用注释掉的代码,我手动将数据逐行推送到数组中。这是唯一的方法吗?

绑定到.rows收到的实际错误是:Error: Duplicates in a repeater are not allowed. Repeater: item in items key: undefined:undefined

服务:

// only portion of code shown
query: function (q) {
        var d = $q.defer();
        var db = this.getDb();

        db.transaction(function (t) {
            t.executeSql(q, [], function (tx, results) {
                d.resolve(results);
            }, function (err) {
                d.reject(err);
            });

        }, function (err) {
            d.reject(err);
        }
        );

        return d.promise;
     }

控制器是这样的:

  Sql.query('select * from DEMO').then(function (data) {
                console.log(data);
                //$scope.items = [];

                //for (i = 0, l = data.rows.length; i < l; i++) {
                    //$scope.items.push(data.rows.item(i));
                //}

                $scope.items = data.rows;  // this errors out
                $scope.$safeApply();
            });

中继器只是一个简单的:

<div ng-repeat='item in items'>{{item.id}} {{item.data}}</div>

【问题讨论】:

    标签: sqlite angularjs cordova web-sql


    【解决方案1】:

    根据错误消息,undefined 数组中似乎有多个 undefined 项。

    您的工作代码使用data.rows.item(i) 是创建一个新的空对象而不是未定义?尝试在您的工作代码中将data.rows.item(i) 更改为data.rows[i] 是否也会中断?

    假设您使用的是 angular 1.1.5,这里有一些选项:


    注意:对于其他有类似类型错误的人,Angular 在执行ng-repeat 时会为对象生成$$hashKey。此错误表示数组中存在相同的对象(具有相同的$$hashKey),并且在 1.1.5(及更高版本?)中是不允许的。

    请参阅此blog postgoogle groups post 了解更多信息。此外,这个pull request 看起来很相关,所以我不确定这种行为是否会继续下去,尽管它似乎在过去已经得到修复。

    【讨论】:

    • 我运行的查询只有两列两行数据,id和data,都有和显示数据。我将降级版本并报告是否修复它。
    • 我刚刚有机会对此进行测试,并在 1.1.4 和 1.1.5 中都遇到了类似的问题。返回到 1.0.7 为其他任何有哈希键问题的人修复了它。
    猜你喜欢
    • 2015-08-06
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 2019-04-05
    • 1970-01-01
    • 2017-03-25
    相关资源
    最近更新 更多