How can I pop the list of my clients on the screen, the list is coming from my database, I have 11 rows of clients and I want to create a listview of those and show them, this is my code:
如何在屏幕上弹出我的客户列表,列表来自我的数据库,我有11行客户我想创建一个列表视图并显示它们,这是我的代码:
dbFactory.method = function findAll() {
db.transaction(
function(tx) {
var sql = "SELECT (nome) as nomes FROM clientes";
log(sql);
tx.executeSql(sql, [],
function(tx, results) {
var len = results.rows.length,
clientes = [],
i = 0;
for (; i < len; i = i + 1) {
clientes[i] = results.rows.item(i).nomes;
}
log(clientes + ' found');
}
);
},txErrorHandler,
function () {
}
);
};
Controller:
控制器:
.controller('ListaCtrl', function ($scope, dbFactory) {
$scope.items = dbFactory.method();
console.log(dbFactory.method());
});
clientes.html:
clientes.html:
<ion-view view-title="Playlists" ng-app="starter">
<ion-content>
<ion-list>
<ion-item ng-repeat="itens in items" >
<p>{{itens.nome}}</p>
</ion-item>
</ion-list>
</ion-content>
</ion-view>
The log:
日志:
Promise {$$state: Object, then: function, catch: function, finally: function}
$$state: Object
status: 1
value: SQLResultSet
insertId: [Exception: DOMException: Failed to read the 'insertId' property from 'SQLResultSet': The query didn't result in any rows being added.]
rows: SQLResultSetRowList
length: 11
__proto__: SQLResultSetRowList
rowsAffected: 0
2 个解决方案
#1
2
I've managed to solve that using deferred and promise, here is what I did:
我已经用deferred和promise解决了这个问题,我所做的是:
var getMessages = function findAll() {
db.transaction(
function(tx) {
var sql = "SELECT (nome) as nomes FROM clientes";
tx.executeSql(sql, [],
function(tx, results) {
var len = results.rows.length,
clientes = [],
i = 0;
for (; i < len; i = i + 1) {
clientes[i] = results.rows.item(i).nomes;
}
log(clientes + ' rowsss found');
deferred.resolve(clientes);
}
);
},txErrorHandler,
function () { }
);
return deferred.promise;
};
return {
showClientes: getMessages
};
The Controller:
控制器:
.controller('ListaCtrl', function ($scope, dbFactory) {
dbFactory.showClientes().then(function(listview) {
$scope.clientes = listview;
console.log($scope.clientes);
});
});
And the html:
html:
<ion-view view-title="Playlists" ng-app="starter">
<ion-content>
<ion-list>
<ion-item ng-repeat="cliente in clientes">
{{cliente}}
</ion-item>
</ion-list>
</ion-content>
</ion-view>
Now I can see my listview with all my clients.
现在我可以看到我的列表视图和我所有的客户。
#2
1
.controller('ListaCtrl', function ($scope, dbFactory) {
dbFactory.method().$promise.then(
function(res){
$scope.items = res; //or res.data
},
function(){
//error call back
}
);
});
#1
2
I've managed to solve that using deferred and promise, here is what I did:
我已经用deferred和promise解决了这个问题,我所做的是:
var getMessages = function findAll() {
db.transaction(
function(tx) {
var sql = "SELECT (nome) as nomes FROM clientes";
tx.executeSql(sql, [],
function(tx, results) {
var len = results.rows.length,
clientes = [],
i = 0;
for (; i < len; i = i + 1) {
clientes[i] = results.rows.item(i).nomes;
}
log(clientes + ' rowsss found');
deferred.resolve(clientes);
}
);
},txErrorHandler,
function () { }
);
return deferred.promise;
};
return {
showClientes: getMessages
};
The Controller:
控制器:
.controller('ListaCtrl', function ($scope, dbFactory) {
dbFactory.showClientes().then(function(listview) {
$scope.clientes = listview;
console.log($scope.clientes);
});
});
And the html:
html:
<ion-view view-title="Playlists" ng-app="starter">
<ion-content>
<ion-list>
<ion-item ng-repeat="cliente in clientes">
{{cliente}}
</ion-item>
</ion-list>
</ion-content>
</ion-view>
Now I can see my listview with all my clients.
现在我可以看到我的列表视图和我所有的客户。
#2
1
.controller('ListaCtrl', function ($scope, dbFactory) {
dbFactory.method().$promise.then(
function(res){
$scope.items = res; //or res.data
},
function(){
//error call back
}
);
});