2016-12-02 11 views
0

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は親カスタム要素が適切に要求されていなかった...

+1

Aureliaはデフォルトで、新しい大文字の単語ごとにクラス名をハイフンで区切るため、要素名は「」ではなく、「」にする必要があります。違いがあるかどうかを確認するために、使用法の要素を変更してみてください。あるいは、クラス名を 'MyElement'から' Myelement'に変更してください。 – LStarky

+0

@bindable()をかっこで記述してください。しばらく前に、()が見つからないときに奇妙な動作を引き起こすTypeScriptのバグについて読んでいます。また、ユニットを「km」にバインドしていて、文字列がUIに渡ることを期待しているようですが、この場合kmはプロパティとして解釈されます。ユニットプロパティを作成し、その値を 'km'に設定し、次にそれにバインドします。 – mgiesa

+0

@LStarkyバインディングではなく、正しいファイルのロードに役立ちました。 –

答えて

0

添付されませんでした@bindable

関連する問題