Sqlite Web sql/sql Lite并绑定到数据库中的行
这是一个phonegap应用程序。我本以为绑定到db查询返回,Sqlite Web sql/sql Lite并绑定到数据库中的行,sqlite,angularjs,cordova,web-sql,Sqlite,Angularjs,Cordova,Web Sql,这是一个phonegap应用程序。我本以为绑定到db查询返回,result.rows在我的例子中是可能的,但似乎不是。我能让它工作的唯一方法是使用注释掉的代码,我手动将数据逐行推送到数组中。这是唯一的办法吗 绑定到.rows时收到的实际错误是:错误:中继器中不允许重复。中继器:项目中的项目键:未定义:未定义 服务: // only portion of code shown query: function (q) { var d = $q.defer(); var
result.rows
在我的例子中是可能的,但似乎不是。我能让它工作的唯一方法是使用注释掉的代码,我手动将数据逐行推送到数组中。这是唯一的办法吗
绑定到.rows
时收到的实际错误是:错误:中继器中不允许重复。中继器:项目中的项目键:未定义:未定义
服务:
// 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();
});
Sql.query('select*from DEMO')。然后(函数(数据){
控制台日志(数据);
//$scope.items=[];
//对于(i=0,l=data.rows.length;i
中继器只是一个简单的:
<div ng-repeat='item in items'>{{item.id}} {{item.data}}</div>
{{item.id}{{item.data}
根据错误消息,在数据.rows
数组中似乎有多个未定义的项
您的工作代码使用data.rows.item(i)
是否创建了一个新的空对象而不是未定义的对象?尝试将工作代码中的data.rows.item(i)
更改为data.rows[i]
,这是否也会中断
假设您使用的是angular 1.1.5,以下是一些选项:
- 使用当前的解决方法
- 降级至1.1.4或当前稳定的1.0.7。我认为1.1.4将在a和a的基础上工作
- 从
数据中删除所有重复的未定义的
行。行
注意:对于具有类似错误类型的其他对象,在执行ng repeat
时,Angular会向对象生成$$hashKey
。此错误表示数组中存在相同的对象(使用相同的$$hashKey
),1.1.5(及更高版本?)中不允许出现此错误
更多信息,请参见此和。此外,这看起来是相关的,因此我不确定此行为是否打算继续,尽管它在过去似乎已被修复。我正在运行的查询只有两列和两行数据,即id和数据,它们都有和显示数据。我将降级版本并报告是否修复了它。我刚刚有机会测试了这个版本,并在1.1.4和1.1.5中遇到了类似的问题。。后退到1.0.7修复了其他任何hashkey问题。