使用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
成员?
答案 0 :(得分:0)
app.html中的绑定<field field=${field}></field>
会将字段值转换为字符串。您应该使用<field field.bind='field'></field>
将field
中保存的实际对象绑定到field
组件。