Javascript 承诺从我的服务返回未定义
我使用web sql获取数据 我创建控制器、模型和服务: 服务Javascript 承诺从我的服务返回未定义,javascript,angularjs,Javascript,Angularjs,我使用web sql获取数据 我创建控制器、模型和服务: 服务 app.project.service('ProjectService', ['$webSql', 'config', function ($webSql, config) { var db = $webSql.openDatabase('MyApp', '1.0', 'MyApp', 2 * 1024 * 1024); this.getAll = function (params) { var
app.project.service('ProjectService', ['$webSql', 'config', function ($webSql, config) {
var db = $webSql.openDatabase('MyApp', '1.0', 'MyApp', 2 * 1024 * 1024);
this.getAll = function (params) {
var projects = [];
db.selectAll("projects").then(function(results) {
for(var i=0; i < results.rows.length; i++){
projects.push(results.rows.item(i));
}
return projects;
})
};
this.create = function (project) {
return db.insert('projects', project).then(function(results) {
console.log(results.insertId);
});
};
this.createTable = function () {
return db.createTable('projects', {
"id":{
"type": "INTEGER",
"null": "NOT NULL", // default is "NULL" (if not defined)
"primary": true, // primary
"auto_increment": true // auto increment
},
"created":{
"type": "TIMESTAMP",
"null": "NOT NULL",
"default": "CURRENT_TIMESTAMP" // default value
},
"name":{
"type": "TEXT",
"null": "NOT NULL"
},
"path": {
"type": "TEXT",
"null": "NOT NULL"
},
"file": {
"type": "TEXT",
"null": "NOT NULL"
}
});
};
}]);
控制器
app.home.controller('HomeController', ['$scope', '$http', '$webSql', 'Project', function ($scope, $http, $webSql, Project) {
var project = new Project();
$scope.refresh = function(){
new_project = {"name": 'Project1 WEB PREPROD', "path": 'project1.preprod.site.com', 'file': '/release.txt'};
// project.createTable();
project.create(new_project);
$scope.projects = project.getAll();
console.log(project.getAll());
};
$scope.refresh();
}]);
我可以创建表并创建一个新对象(项目),但当我执行$scope.projects=project.getAll()时代码>
我的控制台日志返回未定义
我在服务中试过这个
this.getAll = function (params) {
var projects = [];
db.selectAll("projects").then(function(results) {
for(var i=0; i < results.rows.length; i++){
projects.push(results.rows.item(i));
}
}).then(function() {
return projects;
})
};
this.getAll=函数(params){
var项目=[];
db.选择所有(“项目”)。然后(功能(结果){
对于(var i=0;i
但我也有同样的问题你错过了从服务getAll
方法返回承诺。基本上是db。selectAll
函数返回一个承诺,您不会返回
this.getAll = function (params) {
//return promise from here.
return db.selectAll("projects").then(function(results) {
for(var i=0; i < results.rows.length; i++){
projects.push(results.rows.item(i));
}
return projects;
})
};
借
但是我添加了这个.then(function(){returnprojects;});在我的函数db.selectAll之后?我该怎么做?@JérémieChazelle内部返回只是为了链接承诺
,第一个你没有返回承诺对象的位置。。
this.getAll = function (params) {
//return promise from here.
return db.selectAll("projects").then(function(results) {
for(var i=0; i < results.rows.length; i++){
projects.push(results.rows.item(i));
}
return projects;
})
};
$scope.projects = project.getAll();
project.getAll().then(function(results) {
$scope.projects = results;
});