在Angular中调用多个JSON对象的函数

时间:2015-01-09 16:56:39

标签: json angularjs

我试图让Angular控制器使用一些JSON,如下所示,并调用" userService"它有一个名为" calculateAge"的函数。此函数将在提供的日期和各个JSON对象dateOfBirth之间进行差异以返回年龄。

我知道这可能不是实现这一目标的最佳方式,这只是一个说明性的例子。

我遇到的困难是调用userService.calculateAge并让它填充" age"每个JSON对象的值。理想情况下,我希望每次执行此函数返回的值,以便我可以更好地理解如何在Angular中调用函数。

我的直觉是我几乎在那里,也许需要使用for-each循环或类似的东西,但是我的Angular技能包括大约2天的学习!

示例数据:

[{
   "firstName":"Bob", "lastName":"Smith", "dateOfBirth":"14-12-1988",
   "email":"BSmith", "mobileNumber":null, "landLineNumber":null,
   "isAdmin":false, "isModerator":false, "isEnabled":false, "isActivated":false
 }, {
   "firstName":"Jo", "lastName":"Smith", "dateOfBirth":"15-03-1990",
   "email":"Smithy", "mobileNumber":null, "landLineNumber":null,
   "isAdmin":false, "isModerator":false, "isEnabled":false, "isActivated":false
}]

我的AngularJS控制器和服务

angular.module("UserApp", [])
.service('userService', function () {
    return {
        calculateAge: function (dateOfBirth) {

            return "23"; //dummy age value here
        }
    };
})
.controller("listUsersController", ['$scope', '$http', 'userService', function ($scope, $http, userService) {
    $http.get("/user/")

        .success(function (data, status, headers, config) {
            $scope.users = data;

            var age = userService.calculateAge($scope.users.dateOfBirth);
            $scope.users.age = age;


        })
        .error(function (data, status, headers, config) {
            // log error
        });
}] ...

1 个答案:

答案 0 :(得分:1)

这与Angular没有任何关系。

您希望在数据恢复后将每个user发送到您的服务后进行循环。这样,您可以在第一次循环时添加新属性。

    .success(function (data, status, headers, config) {
        $scope.users = data;

        for (var i = $scope.users.length - 1; i >= 0; i--) {
            $scope.users[i].age = userService.calculateAge($scope.users[i].dateOfBirth);
        };

    })