ng-rupeat ionic - 在列表中显示数据

时间:2017-10-28 06:16:28

标签: ionic-framework

我正在尝试在列表中显示我的数据,但它没有显示出来。即使我试图控制记录我传递的数据,但它不起作用。

<ion-view view-title="Chats">
<ion-content ng-controller="TodoCtrl">
<ion-list>
  <ion-item class="item-remove-animate item-avatar item-icon-right" ng-repeat="task in tasksArray" type="item-text-wrap">
    <p>{{task.name}}</p>
    <i class="icon ion-chevron-right icon-accessory"></i>
  </ion-item>
</ion-list>

  $scope.tasksArray = [
$cordovaSQLite.execute(db, query).then(function(result) {
  let tasks = [];
  if (result.rows.length > 0) {
    for (var i = 0; i < result.rows.length; i++) {
      tasks.push({ name: result.rows.item(i).name, skill: result.rows.item(i).description});
    }
    return tasks;
  };
})
];
debugger

每次我调试它并检查scope.tasksArry它给了我类似[Promise]的东西而不是我想要的数据。 请帮忙

2 个答案:

答案 0 :(得分:0)

结果为[Promise]因为$cordovaSQLite.execute因异步操作而返回保证。

$scope.tasksArray = [];

$cordovaSQLite.execute(db, query).then(function(result) {
  if (result.rows.length > 0) {
    for (var i = 0; i < result.rows.length; i++) {
      $scope.tasksArray.push({ name: result.rows.item(i).name, skill: result.rows.item(i).description});
    }
  };
});

答案 1 :(得分:0)

请查看以下示例代码,它将为您提供帮助..

        .factory('DbService', ['$q', '$http','$window','$cordovaSQLite', function ($q, $http,$window,$cordovaSQLite) {
            return {
              getData: function(db,query) {
                         var deferred = $q.defer();
                         var promise  = deferred.promise;
                         var response = {result : '',error : ''};
                         $cordovaSQLite.execute(db, query)
                             .then(function(result) {
                                 response.result = result.rows;
                                 deferred.resolve(response);
                             }, function(error) {
                                 response.error = error;
                                 deferred.reject(response);
                             })
                         promise.success = function(fn) {
                             promise.then(fn);
                             return promise;
                         }

                         promise.error = function(fn) {
                             promise.then(null, fn);
                             return promise;
                         }

                         return promise;
              }
            }
        }]);

在您的控制器中使用以下代码,

        .controller('DbCtrl', function($scope,DbService) {

          $scope.tasksArray = [];

          DbService.getData(db, query)
                .success(function(data) {
                    if(data && data.length){
                      $scope.tasksArray = data;
                    }
                }).error(function(data) {
                    console.log(data);
                    $scope.tasksArray = [];
                });
          });
        })

您需要在[Promise]方法中处理$cordovaSQLite.execute

请查看示例演示到here

希望这会对你有帮助!