2016-07-12 13 views
0

Aureliaは文字列補間です。 stringnumberまたはbooleanをその変数にバインドすると、それはone-wayにバインドされます。値変換器で印刷された値にAureliaスロットル

しかし、オブジェクトをバインドして、私が望むようにValueConverterを使用すると、バインドされたオブジェクトはone-timeになります。

one-timeの代わりにone-wayをバインドするために値コンバータを使用するにはどうすればよいですか。

私は${data | objectPrinter & oneWay}を使用しようとしましたが、動作しません。

Running code can be found on this gist

app.html

<template> 
    <div class="row"> 

<!-- this isn't updated on change     --> 
    <pre>${data | objectPrinter}</pre> 

    </div> 

    <input value.two-way="data.branches"> 

<!-- this gets updated       --> 
    ${data.branches} 

</template> 

app.js

export class App { 
    data = { 
    branches: "test" 
    } 
} 

export class objectPrinterValueConverter { 
    toView(obj){ 
    return JSON.stringify(obj, null, 4); 
    } 
} 

index.htmlを

<!doctype html> 
<html> 
    <head> 
    <title>Aurelia</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    </head> 
    <body aurelia-app> 
    <h1>Loading...</h1> 

    <script src="https://cdn.rawgit.com/jdanyow/aurelia-bundle/v1.0.3/jspm_packages/system.js"></script> 
    <script src="https://cdn.rawgit.com/jdanyow/aurelia-bundle/v1.0.3/config.js"></script> 
    <script> 
     System.import('aurelia-bootstrapper'); 
    </script> 
    </body> 
</html> 

答えて

3

アウレリアはABSTRにあなたのバインド式のテキストを解析し、 (AST)を実行し、それを使用して観察するプロパティを決定します。式で参照されているプロパティのみを監視します。

例では、バインディング式は次のようになります。data | objectPrinter。式は、ビューモデルのdataプロパティにアクセスします。これにより、Aureliaは変更のデータプロパティを観察します。 しかしそれは決して変更されません。あなたの例では、ビューモデルのデータプロパティは同じオブジェクトインスタンスのままです。変更されるのは、objectPrinter式で参照されていないbranchesプロパティです。そのため、更新ではそのバインディングの再評価は行われません。ここで

は、オブジェクト・プリンタを作成する別の方法です:

https://gist.run/?id=9eea8902521f4523ee2c

関連質問(それはあなたのケースでは動作しませんanswer-受け入れを無視する):

debug Aurelia ViewModel similar to ko.toJson

関連する問題