首页 > 解决方案 > Angularjs scope.safeapply() 刷新

问题描述

我的问题是:我用 AngularJS 创建了一个 Cordova APP-s。这段代码有效,但我有一个小问题。当我点击屏幕时,屏幕正在刷新。所以没有自动刷新。我尝试了 $scope.apply() 而不是 $scope.safeApply() 但它不起作用。即使 application_data 表中有数据,也没有显示数据。

我的控制器:

$scope.datas = [];

db.transaction(function(transaction) {
    transaction.executeSql('SELECT * FROM application_data', [], function (tx, results) {
        var len = results.rows.length, i;

        for (i = 0; i < len; i++){
            $scope.id = results.rows.item(i).id;
            $scope.name = results.rows.item(i).name;
            $scope.date = results.rows.item(i).date;

            $scope.datas.push({id: $scope.id, name: $scope.name, date: $scope.date});

        }
    }, null);

    $scope.safeApply();
});

我的观点:

<div ng-repeat="data in datas">
    {{data.id}} - {{data.name}} - {{data.date}}
</div>

标签: angularjscordovascopeangularjs-ng-repeat

解决方案


尝试将代码放入 $scope.$apply

$scope.datas = [];

db.transaction(function(transaction) {
    transaction.executeSql('SELECT * FROM application_data', [], function (tx, results) {
        var len = results.rows.length, i;

        $scope.$apply(function() {

            for (i = 0; i < len; i++){
                $scope.id = results.rows.item(i).id;
                $scope.name = results.rows.item(i).name;
                $scope.date = results.rows.item(i).date;

                $scope.datas.push({id: $scope.id, name: $scope.name, date: $scope.date});

            }
        });
    }, null);

});

推荐阅读