aurelia数据绑定中断?

时间:2017-11-04 23:08:23

标签: javascript data-binding aurelia aurelia-binding

使用Aurelia网络似乎数据绑定默默地将数据修改为data.toString()

假设我有一个最小的类(simpleFieldModel.js):

export class SimpleFieldModel {
    the_data() {
        return "eeew";
    }
}

主视图看起来像(app.html& app.js):

<template>
    <require from="./field"></require>
    <field field=${field}></field>
</template> 

-

import {SimpleFieldModel} from './SimpleFieldModel';

export class App {
    constructor() {
        this.field  = new SimpleFieldModel();
        let n = this.field.the_data();
    }
} 

自定义html元素看起来像(field.html&amp; field.ts):

<template>
    ${fieldName}
</template>

-

import {bindable, bindingMode} from 'aurelia-framework';
import {FieldModel} from "./FieldModel";
import {SimpleFieldModel} from "./SimpleFieldModel";

export class Field {
    @bindable({defaultBindingMode: bindingMode.OneTime}) field: SimpleFieldModel = undefined;

    secretMessage = 'Be sure to drink your Ovaltine!';

    constructor() {
    }

    get fieldName(): string {
        if (this.field !== undefined) {
            let fm = new SimpleFieldModel();
            alert(fm.the_data());
            alert(this.field.the_data())
            return this.field.the_data();
        } else {
            return "undefined";
        }
    }
}

现在在第一次警报之后“崩溃”。 - 使用webstorm的调试器向我显示“the_data未定义”。 - 进一步的分析表明this.field实际上是一个字符串,只是实际字段的字符串表示。 - 那么如何在上面的例子中“链式绑定”?如何使field类中的Field成员绑定到field类的app成员?

1 个答案:

答案 0 :(得分:0)

app.html中的绑定<field field=${field}></field>会将字段值转换为字符串。您应该使用<field field.bind='field'></field>field中保存的实际对象绑定到field组件。