【发布时间】:2016-04-29 17:03:48
【问题描述】:
我在 ASP.NET 5 应用程序中使用带有类型脚本的 Angular 1.4 和 RXJS。我有一个非常奇怪的问题。在运行时,我所有的界面属性都从骆驼套管转换为 Pascal 套管。为什么会发生这种情况以及如何避免这种情况?
请注意,我正在使用 Promise 从 web api 获取数据,像这样调用
public GetDataFromAPI(request: Messages.IRequest): Observable<Messages.IResponse> {
let result: IPromise<Messages.IResponse>;
result = this.$http.post("http://api.domain.com/GetData", request).then(
(response: ng.IHttpPromiseCallbackArg<Messages.IResponse>) => {
return response.data;
}
);
return Observable.fromPromise(result).retry(3);
}
这是我定义接口的方式
export interface IResponse{
firstName : string;
lastName : string;
age : number
}
当我取回数据时,它的属性具有像这样的 CamelCasing 使它们可以访问。
response.data.FirstName
response.data.LastName
response.data.Age
【问题讨论】:
-
后端必须返回带有这种情况的字段的对象。检查您在开发工具的网络选项卡中获得的内容。
-
它返回一个带有字段的对象,但所有字段名称都是驼峰式,这意味着如果我尝试在代码中的任何地方访问 data.firstName 它将是未定义的,但如果我写 data.FirstName 它有效(我不想这样做,因为在这种情况下打字稿编译器会抛出错误)
-
好吧,如果您的后端返回的对象带有一个名为 FirstName 的字段,那么没有什么能神奇地将这个字段转换为 firstName。在后端和前端采用并遵守约定。
标签: angularjs typescript rxjs