在Cordova应用程序中,我一直试图绑定像这样的角标记:
<table class="table table-striped table-responsive">
<thead>
<tr>
<th>Rotation</th>
<th>ID</th>
<th>Name</th>
<th>DOB</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="item in dtPatients track by item.fldRotation">
<td>{{item.fldRotation}}</td>
<td>{{item.fldID}}</td>
<td>{{item.fldTitle + " " + item.fldForename + " " + item.fldSurname}}</td>
<td>{{item.fldDOB | date:'dd/MMM-yy'}}</td>
</tr>
</tbody>
</table>
对于像这样的控制器中的简单WebSQL事务:
tx.executeSql("Select * from [tblPatients];"
, []
, function (tx, results) {
if (results.rows.length == 0) {
$scope.dtPatients = null;
$scope.$apply();
}
else {
// We have records so we create an array of the results
$scope.dtPatients = results.rows;
$scope.$apply();
debugger;
}
}
, function (tx, err) {
console_log("Error retrieving patients.");
$scope.dtPatients = null;
logdberror(err.code, err.message);
errorsource = -1;
ShowError('PatientsController1 load patients', err.code.toString + " " + err.message);
$scope.$apply();
}
);
这会产生错误,唯一的方法是使用如here所示的代码将行转换为数组。我注意到作者在链接中记录的错误,但我不确定这是我得到的错误。我也尝试将ng-repeat从上面显示的更改回到我从
开头的那个ng-repeat="item in dtPatients"
无论哪种方式,我都会遇到同样的错误。当然没有必要在绑定之前将SQL Resultset转换为数组?
这里给出了错误:
达到10 $ digest()次迭代。中止!观察者在最后开除了 5次迭代:[[{&#34; msg&#34;:&#34; fn:function(c,d){var e = a(c,d); return B(E,C,d)}&#34;&#34;的newval&#34;:17,&#34; OLDVAL&#34;:15}],[{&#34; MSG&#34;:& #34; fn:function(c,d){var e = a(c,d);返回b(e,c,d)}&#34;,&#34; newVal&#34;:19,&#34; oldVal&#34;:17}],[{ &#34; MSG&#34;:&#34; FN: function(c,d){var e = a(c,d); return B(E,C,d)}&#34;&#34;的newval&#34;:21,&#34; OLDVAL&#34;:19}],[{&#34; MSG&#34;:& #34; fn:function(c,d){var e = a(c,d);返回b(e,c,d)}&#34;,&#34; newVal&#34;:23,&#34; oldVal&#34;:21}],[{ &#34; MSG&#34;:&#34; FN: function(c,d){var e = a(c,d); return b(e,c,d)}&#34;,&#34; newVal&#34;:25,&#34; oldVal&#34;:23}]]错误(原生)at localhost:4400 / scripts / angular.min.js:6:417 at n。$ get.n. $ digest (localhost:4400 / scripts / angular.min.js:124:185)在n。$ get.n. $ apply (本地主机:4400 /脚本/ angular.min.js:126:293)
提前感谢您的任何帮助/建议。
答案 0 :(得分:3)
经过几天的研究,我找到了答案,所以我想我会弹出并发布它以防其他人想知道如何将Angular绑定到SQLite / WebSQL结果集。
在上面的问题中,我有一个回调函数,用于异步返回结果:
else {
// We have records so we create an array of the results
$scope.dtPatients = results.rows;
$scope.$apply();
debugger;
}
这似乎触发了错误所指的无限循环。我怎么或为什么不知道,也许有更好的Angular经验的人可以回答这个问题。然而,我发现的解决方案不是手动构建一个字符串数组,就像我上面提到的链接那样,而是改变代码,在这样的一个动作中执行它:
else {
// We have records so we create an array of the results
$scope.dtPatients = JSON.parse(JSON.stringify(results.rows));
$scope.$apply();
debugger;
}
基本上&#34;字符串&#34;然后将其转换回JSON对象。我希望我知道你为什么不能绑定到SQLite结果集但是现在这是我能得到的下一个最好的修复/解决方法,而且我知道无论如何这都是正确的方法。