簡體   English   中英

離子收集重復-由WebSQL數據庫填充的丟失

[英]Ionic Collection Repeat - Miss to be populate by websql database

我對離子收集的重復有些麻煩。 我無法顯示來自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> 

請幫忙。

問題在於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;
});

我像這樣更改代碼:我在下面創建了新服務

.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();})

我已經解決了問題

謝謝@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
        };

一切順利。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM