我有一些离子收集重复的麻烦。我无法显示来自Web sql数据库的填充列表。 我的控制器看起来像:
.controller('femmeListCtrl', function($scope) {
$scope.dataFemme = [];
db.transaction(function(tx) {
tx.executeSql('SELECT * FROM datafemme', [], function(tx, results) {
for (var i = 0; i < results.rows.length; i++) {
$scope.dataFemme[i] = {
id: results.rows.item(i).id
, 'code_patient': results.rows.item(i).code_patient
};
}
});
});
})
<div class="list">
<a class="item my-item"
collection-repeat="item in dataFemme | filter:filter"
collection-item-height="90"
collection-item-width="'100%'">
<h2>{{ item.code_patient }}</h2>
</a>
</div>
请帮助。
答案 0 :(得分:0)
问题是Angular不知道变量已经改变。只需在for循环结束时添加$ timeout。
<强>编辑:强>
.factory('femmeService', function($q) {
var femmeService = {};
femmeService.dataFemme = [];
femmeService.getAll = function() {
var deferred = $q.defer();
db.transaction(function(tx) {
tx.executeSql('SELECT * FROM datafemme', [], function(tx, results) {
for (var i = 0; i < results.rows.length; i++) {
femmeService.dataFemme[results.rows.item(i).id] = {
'id': results.rows.item(i).id,
'code_patient': results.rows.item(i).code_patient
};
}
deferred.resolve();
});
});
return deferred.promise;
};
return femmeService;
});
然后在控制器中:
femmeService.getAll().then(function() {
$scope.dataFemme = femmeService.dataFemme;
});
答案 1 :(得分:0)
我改变了代码: 我在
下创建了新服务.factory('femmeService', function($timeout) {
var dataFemme = [];
db.transaction(function(tx) {
tx.executeSql('SELECT * FROM datafemme', [], function(tx, results) {
for (var i = 0; i < results.rows.length; i++) {
//dataFemme[results.rows.item(i).id] = {
dataFemme[i] = {
id: results.rows.item(i).id
, 'code_patient': results.rows.item(i).code_patient
};
}
$timeout(function() {
dataFemme;
}, 3000);
});
});
return {
all: function() {
return dataFemme;
},
get: function(id) {
return dataFemme[id];
}
};})
并且还更改了控制器
.controller('femmeListCtrl', function($scope, femmeService) {
$scope.dataFemme = femmeService.all();})
我已经解决了这个问题
答案 2 :(得分:0)
谢谢@Leandro Zubreski,在服务中使用$ timeout后,错误是dataFemme的索引[results.rows.item(i).id]所以我用了这个
dataFemme[i] = {
id: results.rows.item(i).id
, 'code_patient': results.rows.item(i).code_patient
};
一切都正常。