최근에 Aurelia를 사용해 보았습니다. (Javascript를 처음 사용하고 입력 된 언어를 사용하여 타이프 스크립트 뼈대에서 작업했기 때문에) 내가 이해하지 못하는 상속을 봅니다.Aurelia view 상속이 이상한 행동을합니다. (typescript skeleton)
일반 기능으로 두 개의보기를 만들고 싶었습니다. 두 가지보기를 모두 확장 할 수있는 공통의 수퍼 클래스를 만들고 싶었습니다. 그러나 이로 인해 예기치 않은 동작이 발생했습니다. app.html에서 두 뷰를 모두 포함하는 경우 require 문 순서에 따라 두 뷰 중 하나만 표시됩니다.
부모 - view.ts
import {bindable} from 'aurelia-framework';
export abstract class ParentView {
@bindable title: string;
}
아이-A-view.html
<template><div>${title} A</div></template>
아이-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>
아이-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"를 기대합니다. 다시 내가 "TitleB B를 두 줄"TitleA A를 "기대 것 동안
이의 또 다른 주문이 app.html
<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 "를 포함하는 페이지를 제공합니다 ".
이것은 Aurelia의 버그입니까,보기 클래스를 상속하지 못합니까? 아니면이 문제를 일으키는 잘못된 것이 있습니까?
제안 해 주셔서 감사합니다. 필자의 경우 거의 모든 기능이 두 가지보기에 공통적으로 적용되는 훌륭한 접근 방식이었습니다. 또한 다음 단계 중 하나에 도움이되었습니다 (컨텍스트에 따라 하위보기와 하위보기 사이를 전환 할 수있는 '메타'구성 요소가 필요했습니다). 하나의 특정보기에서 현재 공통된 모델에 맞지 않으므로보기에 너무 많은 논리를 넣어야 만한다는 것을 알 수 있습니다. 예를 들어. 그런 경우를 다루기 위해 두 번째 모델을보기에 추가 하시겠습니까? – hmoens
이 문제를 해결할 수있는 방법은 여러 가지가 있지만 가장 좋은 방법은 무엇을 말하는지에 달려 있습니다. 문제의 모델/뷰를 요지에 넣을 수 있다면 좀 더 살펴볼 수 있습니다. https://gist.run/?id=883568d7c8e2add9ed393150100f4744 –