Angular JS(离子)数据数组到$scope元素

Angular JS (Ionic) data Array to $scope Element

本文关键字:scope 元素 数组 数据 JS 离子 Angular      更新时间:2023-09-26

我没有什么问题,

我正在尝试从我的SQLite数据库中获取数据,该功能正在工作,

当我需要恢复数据时,我只是遇到了问题

这就是我所做的:

     $scope.facilityDatas = {};

  dataBaseService.getFacilityById($stateParams.facilityId,function (data) {
    $scope.facilityDatas = angular.copy(data);
    console.log ('facility json : '+ angular.toJson($scope.facilityDatas));
  });

数据变量包含一个包含我的请求结果的数据数组。 我在我的服务中测试了,一切都很好。 现在我只需要制作 $scope.facilityDatas = 数据,但它不起作用......

我不得不承认我有点迷茫。 我几乎可以肯定这没什么,但我不知道该怎么办......

希望你能找到问题所在。

问候

编辑

这是我的数据库函数:

getFacilityById: function(id,callback){
            var data = [];
            $cordovaSQLite.execute(db,'select * from FACILITIES where facilities_id = ?',[id]).then(function (results){
                console.log(angular.toJson(results.rows.item(0)));
                for (var i = 0, max = results.rows.length; i < max; i++) {
                    data.push(results.rows.item(i))
                }
            })

            callback(data);
        },

你在$cordovaSQLite.execute完成之前调用callback,所以你会得到空数组。

将此呼叫移到then

getFacilityById: function(id,callback){
    var data = [];
    $cordovaSQLite.execute(db,'select * from FACILITIES where facilities_id = ?',[id]).then(function (results){
        console.log(angular.toJson(results.rows.item(0)));
        for (var i = 0, max = results.rows.length; i < max; i++) {
            data.push(results.rows.item(i))
        }
        callback(data);
    });
},

甚至返回承诺并直接使用它,就像这样

getFacilityById: function(id,callback){
    var data = [];
    return $cordovaSQLite.execute(db,'select * from FACILITIES where facilities_id = ?',[id]).then(function (results){
        console.log(angular.toJson(results.rows.item(0)));
        for (var i = 0, max = results.rows.length; i < max; i++) {
            data.push(results.rows.item(i))
        }
        return data;
    });
},

并将其用作

$scope.facilityDatas = {};
dataBaseService.getFacilityById($stateParams.facilityId).then(
    function (data) {
        $scope.facilityDatas = angular.copy(data);
        console.log ('facility json : '+ angular.toJson($scope.facilityDatas));
    }
);