在 Angular 内为多个 JSON 对象调用函数

Calling functions within Angular for multiple JSON objects

我正在尝试让 Angular 控制器消耗一些 JSON,如下所示,并调用 "userService",它有一个名为 "calculateAge" 的函数。此函数将在提供的日期和个人 JSON 对象 dateOfBirth 与 return 年龄之间进行比较。

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

我遇到的困难是调用 userService.calculateAge 并让它在每个 JSON 对象上填充一个 "age" 值。理想情况下,我每次都希望函数 returns 的值来执行此操作,以便我可以更好地理解如何在 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
        });
}] ...

这与 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);
        };

    })