AureliaでTypescript(2.0)を使用してカスタム要素をバインドしていますが、機能しません。Aurelia with Typescript:プロパティを使用したバインドが機能しない
myelement.html:
<template>
<div>${caption}</div>
<div>${unit}</div>
</template>
myelement.ts:ここに私の例です
import { bindable } from "aurelia-framework";
export class MyElement {
// removing the @bindable doesn't change anything
@bindable public caption: string;
@bindable public unit: string;
}
使用法:
<require from="./myelement"></require>
...
<myelement caption.bind="currentvalue" unit=" km"></myelement>
電流値プロパティを使用して、クラスに(定義されていますカスタム要素)を
public currentvalue: number = 11;
myelementは正しく挿入されますが、プレースホルダは空のテキスト(つまり、プレースホルダ)に置き換えられます。削除された)、単なるテキストである「単位」さえも含みます。興味深いことに、 "単位" プレースホルダのための作業を何
は次のとおりです。
myelement.html:この場合
<template bindable="unit">
<div>${caption}</div>
<div>${unit}</div>
</template>
、${unit}
は "キロ" に置き換えられます。
何とかAureliaは、カスタム要素のhtmlとviewmodelの間の接続を取得しません。バインド可能な属性を使用するバインディングは、プロパティにバインドされていない場合にのみ機能します。 myelement.jsファイルが正しく読み込まれます(私はAMDモジュールでSystemJSを使用しています)。 何が欠落していますか?
更新:
私はmyelement.tsに@bindable()
に@bindable
を変更し、現在は「単位」は正しくバインドされている - テンプレート内のプレースホルダは、正しく「キロ」に置き換えられます。しかし、プロパティ(私の場合はキャプション)を使用してバインディングはまだ動作しません。
更新2: 最後に私はそれを動作させました。 <require from="./myparentelement.html">
の代わりに、<require from="./myparentelement">
と私は@bindable()
の代わりを使用する必要がありました:(MYELEMENTを使用しています)、親のカスタム要素が<require from="./myparentelement.html">
を使用して含まれていたので、そののviewmodelは親カスタム要素が適切に要求されていなかった...
Aureliaはデフォルトで、新しい大文字の単語ごとにクラス名をハイフンで区切るため、要素名は「」ではなく、「」にする必要があります。違いがあるかどうかを確認するために、使用法の要素を変更してみてください。あるいは、クラス名を 'MyElement'から' Myelement'に変更してください。 –
LStarky
@bindable()をかっこで記述してください。しばらく前に、()が見つからないときに奇妙な動作を引き起こすTypeScriptのバグについて読んでいます。また、ユニットを「km」にバインドしていて、文字列がUIに渡ることを期待しているようですが、この場合kmはプロパティとして解釈されます。ユニットプロパティを作成し、その値を 'km'に設定し、次にそれにバインドします。 – mgiesa
@LStarkyバインディングではなく、正しいファイルのロードに役立ちました。 –