$ http.post和TypeScript访问器

时间:2015-08-04 16:54:29

标签: javascript angularjs typescript

我正在使用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();
    }
}

我的意图是,当序列化对象时,应该序列化所有通过访问器的公共成员和属性,而私有属性不应该序列化。目前的行为是某些私有成员被序列化,而一些公共成员则没有。

请问太多了吗?我还有其他方法可以实现这一目标,因此如果我无法让它发挥作用,那么它就不是世界末日。我实际上并不需要以这种方式摆弄模型课。

但是,这是保持模特牌贴近胸部的最优雅方式,可以这么说。

任何帮助表示赞赏。微米。

1 个答案:

答案 0 :(得分:0)

  

请问太多了吗?我还有其他方法可以实现这一目标,因此如果我无法使其发挥作用,那么它就不是世界末日。我实际上并不需要以这种方式摆弄模型类

privatepublic成员之间存在无运行时差异。也就是说,为每个发出的JavaScript 完全相同

我建议在private/public之上使用变量命名约定,例如public fooprivate _foo。然后在序列化期间,您可以检查属性名称是否以_开头。