我正在尝试在列表中显示我的数据,但它没有显示出来。即使我试图控制记录我传递的数据,但它不起作用。
<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]
的东西而不是我想要的数据。
请帮忙
答案 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。
希望这会对你有帮助!