【问题标题】:Accessing object values passed to function using AngularJS使用 AngularJS 访问传递给函数的对象值
【发布时间】: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;
        }
    };
});

当用户完成表单时,idnamesurname 的值在 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


【解决方案1】:

我认为您缺少声明

    .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
        };

});

看看演示链接 http://plnkr.co/edit/oz7BA6rTW8vYuIHOYBxL?p=preview

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 2018-06-25
    • 2012-04-04
    • 2022-01-16
    • 1970-01-01
    • 2021-08-03
    相关资源
    最近更新 更多