AngularJS 服务器提供的枚举

AngularJS enums provided by server

我需要在 angularJS 应用程序中为员工分配部门。 我在服务器端创建了 API 资源,其中 returns JSON 可能值数组。

[
  {"id":0,"name":"human resources"},
  {"id":1,"name":"public relations"},
  {"id":2,"name":"development"}
]

我的员工资源使用部门 ID,就像这样..

{
  employeeId: 1,
  firstName: "Adam",
  lastName: "Abrons",
  departmentId: 2
}

我想在 angular 过滤器中使用这些值来查看员工,并在 ngOptions 指令中使用这些值来编辑员工。

由于这些枚举值非常稳定,我如何加载它们一次并将它们保存在客户端直到用户离开网站?

您可以使用$http模块

中的构建缓存功能
$http.get('/api/enums', {cache: true}).success(function(enums){
});

此外,您还可以将其包装为service

angular.module('app').service('enumService', function ($http) {

    return {
        getEnums: getEnums
    };

    function getEnums(){
        return $http.get('/api/enums', {cache: true});
    }
});

其他方式使用承诺(归功于JB Nizet的评论)

angular.module('app').service('enumService', EnumService);

function EnumService($http) {

    var getEnumsPromise = $http.get('/api/enums');

    return {
        getEnums: getEnums
    };

    function getEnums(){
        return getEnumsPromise;
    }
}