【发布时间】:2020-05-13 03:10:16
【问题描述】:
我最近开始尝试 Aurelia(我是 Javascript 的新手,并且习惯于类型化语言,所以我正在使用 typescript 框架),我遇到了一些我不理解的视图继承的奇怪问题。
我想创建两个具有通用功能的视图,这就是为什么我想创建一个两个视图都可以扩展的通用超类。然而,这导致了意外行为:当在 app.html 中包含两个视图时,仅显示两个视图之一,具体取决于 require 语句的顺序。
我在下面包含了一个小的最小示例:
父视图.ts
import {bindable} from 'aurelia-framework';
export abstract class ParentView {
@bindable title: string;
}
child-a-view.html
<template><div>${title} A</div></template>
child-a-view.ts
import {ParentView} from './parent-view'
export class ChildAView extends ParentView {
constructor() {
super()
}
}
child-b-view.html
<template><div>${title} B</div></template>
child-b-view.ts
import {ParentView} from './parent-view'
export class ChildBView extends ParentView {
constructor() {
super()
}
}
app.ts
export class App {}
app.html
<template>
<require from="./child-a-view"></require>
<child-a-view title="TitleA"></child-a-view>
<require from="./child-b-view"></require>
<child-b-view title="TitleB"></child-b-view>
</template>
这会给出一个包含文本“TitleA B”的页面作为输出,而我希望有两行“TitleA A”和“TitleB B”。
app.html 中 require 语句的另一种顺序
<template>
<require from="./child-b-view"></require>
<require from="./child-a-view"></require>
<child-a-view title="TitleA"></child-a-view>
<child-b-view title="TitleB"></child-b-view>
</template>
给出一个包含文本“TitleB A”的页面作为输出,而我再次希望有两行“TitleA A”和“TitleB B”。
这是 Aurelia 中的一个错误,是否不允许继承视图类,还是我在这里做错了什么导致了这个?
【问题讨论】:
标签: typescript aurelia