2017-12-18 11 views
1

私はAureliaとTypescriptを使用していて、データを渡した後にテーブルを生成するカスタム要素を持っています。テーブルのフィールドが配列に基づいて生成されるようにしたい値のコンバーターを使用して一部の表示方法を変更する バインディングが渡された配列から動的に生成されるようにカスタムバインディングを作成しようとしています。このガイドの後には、https://blog.ashleygrant.com/2017/07/09/getting-my-hands-dirty-with-aurelias-binding-engine/ちょうど彼が行うように、いくつかのビットを変更する必要がありました。私は、このデータは何かの前にテーブルセルのたくさんのための[オブジェクトのオブジェクト]が表示されます実行すると、私はAureliaカスタムバインディングエラー

<require from="services/custom-binding/dynamic-binding-behaviour"></require> 
<require from="services/data-format"></require><!--ValueConverters--> 
... 
    <tbody> 
     <tr repeat.for="ticket of listData"> 
      <td repeat.for="fieldTest of listDisplay">${ticket & dynamic:'ticket':fieldTest}</td> 
     </tr> 
    </tbody> 

そしてカスタムバインディングクラス

@inject(Parser) 
export class DynamicBindingBehavior { 

constructor(private parser: Parser) { 
} 

bind(binding: BindingWithStorage, source: Scope, dataItem: string, args: FieldList) { 

    let arg = dataItem + '.' + args.field; 

    if (args.valueConverter) { 
     arg += ' | ' + args.valueConverter; 
    } 
    let parsedExpression: Expression = this.parser.parse(arg); 
    binding.originalSourceExpression = binding.sourceExpression; 

    binding.sourceExpression = parsedExpression; 
} 

unbind(binding: BindingWithStorage, source: Scope) { 
    console.log('unbind'); 
    if (binding.originalSourceExpression) { 
     binding.sourceExpression = binding.originalSourceExpression; 
    } 
    binding.originalSourceExpression = null; 
    } 
}  

をカスタムバインディングを呼び出す

HTMLキックインし、私が期待するように表示を開始します。私が新しいページに移動するか、またはリフレッシュするたびに、正確に同じ行と列が表示され、正しく表示されるようになるので、それはaureliaのライフサイクルと関係があると思います。 Example of Incorrect Display

はconsole.log(「アンバインド」)私はまた、問題の一部である場合、私はアウレリアはそれがならば理解することがどのように機能するかについて十分に知っていないことを確認していないので、コンソールに表示されることはありません。

私が提供したリンクでは、表現はリベースされていますが、それを動作させることができず、そこで何をしようとしているのかを本当に理解できません。

+0

あなたはその要旨を提供する必要があります。そして、質問:動作ファイル名は正しいですか? – bigopon

+0

ファイル名が正しいこと、表示されているデータの一部として意図された動作が動作していること、私が作っていたコードで明白な間違いだったと思っていました。週末にそれを試してみます – Lewis

答えて

0

ここにはもう少し前に構築したプロトタイプがあります。編集部分の実装に決して慣れていない。列をフリーズし、大量のデータを処理するために仮想化をグループ化して使用します。

https://gist.run?id=9782317010240c90fc30e179eeb41064

https://gist.github.com/jdanyow/9782317010240c90fc30e179eeb41064

+0

乾杯、私週末にこれを稼働させようとしていますが、ちょっと見ただけで、 SetAttributeBindingBehaviorをどこで使用するのかわかりませんでした。something.bind = "item&setAttribute" – Lewis