私は自分のプロジェクトの1つでこれを使用しています。 短縮されたプロパティを開発用の読み取り可能なプロパティにマップします。 このスニペットが役立つかもしれません。
(function (angular) {
"use strict";
angular.module("services.mapper", []).service("mapper", [function() {
var models = {
employeeModelContract: {
name_surname: "FullName",
years_of_employment: "YearsOfEmployment"
}
};
return {
map: map,
models: models
}
function map(smallObject, contract) {
var largeObject = {};
for (var smallProperty in contract) {
if (contract.hasOwnProperty(smallProperty)) {
largeObject[contract[smallProperty]] = smallObject[smallProperty];
}
}
return largeObject;
}
}]);
})(angular);
使用法:
var mappedObject = mapper.map(yourJson, mapper.models.employeeModelContract);
はUPDATE 1(活字版):
class MapperService implements ng.IServiceProvider {
employeeModelContract:Object= {
name_surname: "FullName",
years_of_employment: "YearsOfEmployment"
};
$get() {
return this;
}
map(smallObject, contract): Object {
var mappedObject: Object = {};
Object.keys(contract).forEach(contractProperty => {
if (contract.hasOwnProperty(contractProperty)) {
mappedObject[contract[contractProperty]] = smallObject[contractProperty];
}
});
return mappedObject;
}
}
class Employee {
constructor(public FullName: string, public YearsOfEmployment: number) { }
}
class Controller implements ng.IController {
constructor(private mapper : MapperService){}
static $inject = ["MapperService"];
json: Object = {
"name_surname": "john_smith",
"years_of_employment": "10"
}
$onInit(): void {
var mapped = <Employee>this.mapper.map(this.json, this.mapper.employeeModelContract);
}
}
angular.module("mapper", []).controller("Controller",Controller).provider("MapperService", MapperService);
私はtypescriptですが使用しているので、私はtypescriptですマッパーではなく、純粋ジャバスクリプトを探しています。 – bambi
私は自分の答えを更新しました。たぶんこれがあなたを助けることができます。 – Danscho
私は自分の答えと修正されたエラーを広げました。 – Danscho