我正在使用Visual Studio 2013中的TypeScript 1.5编写AngularJS应用程序(v1.3.15)。我使用$ http.post()遇到了TypeScript对象属性/访问器和JSON序列化的问题。我认为我的AngularJS非常可靠,但我对TypeScript来说还是一个新手。
我的TypeScript类看起来像这样:
module Wizard.Models {
import Address = Wizard.Models.Address;
"use strict";
export class YourDetailsModel {
public useSecondaryAsPrimary: boolean;
private _primaryFirstName: string;
private _primaryLastName: string;
private _primaryAddressModel: Address = new Models.Address();
get primaryFirstName(): string {
return !this.useSecondaryAsPrimary ? this._primaryFirstName : this.SecondaryFirstName;
}
set primaryFirstName(primaryFirstName: string) {
this._primaryFirstName = primaryFirstName;
}
get primaryLastName(): string {
return !this.useSecondaryAsPrimary ? this._primaryLastName : this.SecondaryLastName;
}
set primaryLastName(primaryLastName: string) {
this._primaryLastName = primaryLastName;
}
get primaryAddressModel(): Address {
return !this.useSecondaryAsPrimary ? this._primaryAddressModel : this.SecondaryAddressModel;
}
set primaryAddressModel(primaryAddressModel: Address) {
this._primaryAddressModel = primaryAddressModel;
}
public SecondaryFirstName: string;
public SecondaryLastName: string;
public SecondaryAddressModel: Address = new Models.Address();
}
}
我的意图是,当序列化对象时,应该序列化所有通过访问器的公共成员和属性,而私有属性不应该序列化。目前的行为是某些私有成员被序列化,而一些公共成员则没有。
请问太多了吗?我还有其他方法可以实现这一目标,因此如果我无法让它发挥作用,那么它就不是世界末日。我实际上并不需要以这种方式摆弄模型课。
但是,这是保持模特牌贴近胸部的最优雅方式,可以这么说。
任何帮助表示赞赏。微米。
答案 0 :(得分:0)
请问太多了吗?我还有其他方法可以实现这一目标,因此如果我无法使其发挥作用,那么它就不是世界末日。我实际上并不需要以这种方式摆弄模型类
private
和public
成员之间存在无运行时差异。也就是说,为每个发出的JavaScript 完全相同。
我建议在private/public
之上使用变量命名约定,例如public foo
和private _foo
。然后在序列化期间,您可以检查属性名称是否以_
开头。