【发布时间】:2017-09-08 21:04:42
【问题描述】:
我正在开发一个 Angular 应用程序。我需要在 SQLite 中创建一个数据库,以便在我的 Android 项目中本地使用。我看到的每个教程都教我在工厂中制作并在其他页面中调用它。
问题是,在很多情况下,我需要获取这些信息并对其进行操作。我已经能够在表单中显示它,但不幸的是,我无法操作从工厂返回的对象。
我的代码如下。
工厂 sqlite:
var db = null;
var clienteselec = [];
var sqlite = angular.module('sqlite', ['ionic', 'ngCordova']);
sqlite.run(function ($ionicPlatform, $cordovaSQLite, $window) {
$ionicPlatform.ready(function () {
db = $cordovaSQLite.openDB({ name: "rollers.db", location: 1 });
$cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS clientes (id integer primary key, nome varchar(40))");
$cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS instalacao (id integer primary key, idCliente int, dataInst datetime)");
$cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS manutencao (id integer primary key, idCliente int, idInstalacao int, dataManut datetime)");
$cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS equipamento (id integer primary key, idInstalacao int, idManutencao int, TC int autoincrement, posicao varcar(1), Rolo varchar(40), dataEquip datetime)");
});
})
sqlite.factory('clientesFactory', function ($cordovaSQLite, $rootScope) {
return {
insert: function (Nome) {
var query = "INSERT INTO clientes (nome) VALUES (?);";
var values = [Nome];
$cordovaSQLite.execute(db, query, values).then(
function (res) {
alert('Cliente Cadastro com Sucesso!');
$cordovaSQLite.execute(db, "SELECT max(id) as id from clientes", []).then(
function (res) {
if (res.rows.length > 0) {
var valores = res.rows.item(0);
$rootScope.idCliente = valores.id;
}
}
);
},
function (err) {
alert('Cliente não cadastrado. Estamos verificando o problema!');
}
);
},
selectTodos: function(tab){
var query = "SELECT * FROM " + tab;
clienteselec = [];
$cordovaSQLite.execute(db, query,[]).then(function (result) {
if(result.rows.length){
for (var i = 0; i < result.rows.length; i++) {
clienteselec.push(result.rows.item(i));
}
}else{
console.log("no data found!");
}
}, function(err){
console.log("error" + err);
});
},
});
控制器:
.controller('ClienteCtrl', ['clientesFactory', '$scope', '$state', '$window', '$rootScope', function (clientesFactory, $scope, $state, $window, $rootScope) {
$scope.listaClientes = function() {
clientesFactory.insert('teste');
clientesFactory.selectTodos('clientes');
$scope.seleciona = clienteselec;
}
}])
HTML:
<ion-content padding>
<div ng-controller="ClienteCtrl">
<button ng-click="listaClientes()">Novo Cliente</button>
<!--<table>
<tr ng-repeat="cli in clientes">
<td></td>
</tr>
</table>-->
<ion-item ng-repeat="cli in seleciona">
{{cli.nome}}
<button ng-click="cadastraCliente({{cli.id}})">Novo</button>
<button ng-click="instala({{cli.id}}, {{cli.nome}})">Instalação</button>
<button ng-click="excluiCliente({{cli.id}}, {{cli.nome}})">Excluir</button>
</div>
</ion-content>
谁能帮忙?
【问题讨论】:
标签: android angularjs sqlite cordova ionic-framework