我无法将http对象映射到我的模型,这就是我正在使用的内容:
MyObjController.ts
class MyObjController {
constructor (
private myObj:myObjService,
private $scope:angular.IScope,
private modal,
private notifier,
private $translate,
private $state,
public items:MyObjModel[],
public loading
) {
this.loading = this.myObj.all();
this.loading.then((allItems) => {
this.items = allItems;
});
}
}
MyObjService.ts
all () : angular.IPromise<MyObjModel[]> {
let uri = `/myuri`;
return this.api.get(uri).then((response:any) => {
return _.map(response.data, MyObjModel.create);
});
}
MyObjModel.ts
export class MyObjModel {
constructor () { }
id:string;
name:string = '';
organizationId:string = '';
static create (apiResponse) {
let model = new MyObjModel();
model.id = apiResponse.Id;
model.name = apiResponse.Name;
model.organizationId = apiResponse.OrganizationId;
return model;
}
}
这种方法不起作用,因为_.map从我的response.data发送每个值,并为每个属性创建一个新的MyObjModel实例,然后创建模型数组。我正在寻找一种方法将response.data作为一个整体发送到我的create()函数,并让它将值映射到模型的单个实例并返回该单个模型。
提前致谢!
答案 0 :(得分:1)
您应该使用以下代码,
all () : angular.IPromise<MyObjModel[]> {
let uri = `/myuri`;
return this.api.get(uri).map(data=><MyObjController>data.json())).toPromise();
});
}
您可以使用接口而不是类和构造函数,这也是推荐的做法