我的视图中有一个表单,要求用户提供一些详细信息,例如id,姓名。为此,我在服务中创建了一个人物对象,如下所示,以保存用户信息。
var personObject = angular.module("personObject", []);
personObject.service("PersonObject", function () {
var Person = {
id: "",
name: "",
surname: ""
};
return {
getPerson: function () {
return Person;
}
};
});
当用户填写表单时, id , name 和 surname 的值在 Person 中设置。这是按预期工作的,我可以在视图控制器中使用 get()查看详细信息。
然后我将person对象传递给另一个应该在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 服务应该将person对象值插入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或未定义) - 只是空白。如何访问对象值?
答案 0 :(得分:0)
我认为你缺少声明
.factory('Service1',['Service2', function (service2,$q, $timeout) {
var sendDataToOtherService= function (data) {
service2.updateData(data[0]);
return true;
}
return {
sendDataToOtherService:sendDataToOtherService
};
}])
.factory('Service2', function ($q, $timeout) {
var updateData= function (data) {
alert(data.name);
return true;
}
return {
updateData:updateData
};
});
看一下demo Link http://plnkr.co/edit/oz7BA6rTW8vYuIHOYBxL?p=preview