Aurelia - 在自定义模板和填充表单上双向绑定的属性始终在控制台

时间:2018-02-20 11:32:10

标签: aurelia

我在自定义元素中有一个双向绑定对象。它与父母的双向约束。

父客户端.ts,根据clientDetails类对客户端数据进行提取。

这里的孩子是地址自定义元素。

当使用客户端填充客户端表单时,通过绑定使用地址组件。

在address.ts(这里的孩子)中,我已经初始化了双向绑定:

@bindable({ defaultBindingMode: bindingMode.twoWay }) address = new AddressDetails;

AddressDetails如下:

    import { Serializable } from "../../../../services/serializable/Serializable"

    import { AddressLocation } from "./addressLocation"


    export class AddressDetails implements Serializable<AddressDetails> {
        address1: string;
        address2: string;

        addressLocation: AddressLocation;

        deserialize(input) {
            //console.log("INPUT: ", input)
            this.address1 = input.address1;
            this.address2 = input.address2;

            if (input.addressLocation) {

                this.addressLocation = new AddressLocation;

                this.addressLocation.deserialize(input.addressLocation);
            }

            return this;
        }
    }

当请求客户端进行编辑时,一切正常,如果填充了客户端,那么地址组件也是如此。

我的问题是我在尝试设置绑定对象的一部分时遇到错误。也就是说,如果我想按照以下方式设置stateShortName:

this.address.addressLocation.stateShortName = this.companyStateShortName;

我收到错误:

address.ts:72 Uncaught (in promise) TypeError: Cannot set property 'stateShortName' of undefined

因为它指出this.address.addressLocation.stateShortName未定义。

这导致我检查是否可以在&#34;创建的&#34;中使用{。{}}来控制{。{1}}的值。功能以及&#34; bind&#34;和&#34;附加&#34;。

所以即使我绑定了这个对象,在开始时作为AddressDetails初始化它总是出现未定义,即使所有字段都显示值仍然是错误,因为&#34; undefined&#34;。

即使我从一开始就初始化了这个对象,无论我在哪里尝试访问这个双向绑定对象我都不能因为它&#34; undefined&#34;

为什么我无法访问它? ..以及如何访问&#34; this.address&#34;或者它的任何成员,所以我可以说,将一个对象的成员设置为一个值?

以下是&#34; address.ts&#34;的全班。 for context 。每当我尝试访问或设置此类中的this.address时,我都会收到错误。

this.address

0 个答案:

没有答案