【发布时间】:2016-11-24 18:45:00
【问题描述】:
我有一个表单视图,它要求用户提供一些详细信息,例如身份证、姓名和姓氏。为此,我在 service 中创建了一个人员对象,如下所示以保存用户信息。
var personObject = angular.module("personObject", []);
personObject.service("PersonObject", function () {
var Person = {
id: "",
name: "",
surname: ""
};
return {
getPerson: function () {
return Person;
}
};
});
当用户完成表单时,id、name 和 surname 的值在 Person 中设置.这按预期工作,我可以在视图控制器中使用 get() 查看详细信息。
然后我将人员对象传递给另一个服务,该服务应该在 SQLite 数据库表中插入用户详细信息。从我的视图控制器中,我将详细信息保存到我的 $scope.save 函数中的数据库中。
var formDetails = angular.module("formDetailsController", []);
formDetails.controller("FormDetailsController", function ($scope, UpdatePerson, PersonObject) {
var init = function () {
document.addEventListener("deviceready", onDeviceReady, false);
};
init();
function onDeviceReady() {
};
// Save details to database
$scope.save = function () {
var update = UpdatePerson.update(PersonObject.getPerson()); // Get the person object with user defined values and pass to UpdatePerson service
update.then(
function (success) {
// ToDo
}, function (fail) {
alert(fail.message);
});
};
});
我的 UpdatePerson 服务应该将人员对象值插入到 SQLite 表中。该表按预期工作,并已使用一些硬编码值进行测试。我的 update() 函数如下所示(给出完整代码)。但是,我无法访问 person 对象值。
var update = angular.module("updatePerson", []);
update.service("UpdatePerson", function ($q, Database) {
// Initialise variables
var db = Database.init(); // Working
var updated = "";
var myFunctions = {
update: function (MyPerson) {
alert("MyPerson + // Returns [object Object]
"\n" + MyPerson.id + // Returns nothing
"\n" + MyPerson.name + // Returns nothing
"\n" + MyPerson.surname // Returns nothing);
var deferred = $q.defer();
var sql = 'INSERT OR IGNORE INTO tb_person (id, name, surname) VALUES (' + MyPerson.id + ', "' + MyPerson.name + '", "' + MyPerson.surname + '")';
var success = function (tx, results) {
deferred.resolve({ updated: true });
}
var error = function (tx, err) {
deferred.reject({
updated: false, message: 'An error has occured});
}
db.transaction(function (tx) {
tx.executeSql(sql, [], success, error);
});
return deferred.promise;
},
}
return myFunctions;
});
我无法在我的 update() 函数中访问我的 Person 对象的值以插入到表中。它返回一个空白(不是 NULL 或未定义) - 只是空白。如何访问对象值?
【问题讨论】:
-
请添加完整的更新方法。
-
现已添加完整代码 sn-ps。
标签: javascript angularjs sqlite object