2017-04-07 12 views
1

こんにちは私はブール値に応じてテキストを動的に変更しようとしています。 私はi18nでAureliaを使用していますが、1つの解決策は、あなたが望むものを返すメソッドを持つことです。しかし、私はhtmlでそれを持っていたいと思います。ボタンがhtmlコードのboolに依存するテキストを確認するのがはっきりと思えるからです。 これは、それが今のようになります。条件に応じてHTMLボタンにi18nテキストを表示するAurelia

<button>${account.changed ? '_cancel' | t : '_close' | t } </button> 

これは私が試したものです:

<button>${account.changed ? ('_cancel' | t) : ('_close' | t) } </button> 
<button>${account.changed ? ${'_cancel' | t} : ${'_close' | t} } </button> 

私の試みのいずれかがクラッシュで終了します。

Error: Parser Error: Conditional expression account.changed ? '_cancel' requires all 3 expressions at column 33 in [account.changed ? '_cancel' | t : '_close' | t ] 

私だけ使用していますこれまでのようにi18Nは

<div>${'example | t'}</div> 

以前の条件に応じてテキストを変更する必要はありません。ここに来て誰にも

は、私はこれはこれをやって解く:

innerHTML.bind="!account.changed ? close : cancel" 

と私はそれがこれをachiveためにいくつかの方法で可能であるべきだと思います

this.close = this.i18n.tr('_close'); 
    this.cancel = this.i18n.tr('_cancel'); 

の.jsで aureliaで直接HTMLで

答えて

1

これは私が使用しているものです:

​​

私はしばらくこのことに執着していましたが、これが私がそれを行うのに最良の方法です。

1

残念ながら、パーサーは現在ネストされた式をサポートしていません。あなたはValueConvertersはアウレリアでどのように機能するかを見てみた場合、あなたは彼らがパイプ記号を活用表示されます

<button ref="myButton" cancel-text="${'_cancel' | t}" close-text="${'_close' | t}">${account.changed ? myButton.cancelText : myButton.closeText}</button> 
1

:平均時間では、あなたのようないくつかの策略を使用することができます。これは、左の式の出力がパイプの後の次のものに転送される古典的なunixスタイルのパイプから期待されるように機能します。

だからあなたのソリューションは、次のようにする必要があります:構文とその結果がTValueConverterへ渡される場合

<button>${account.changed ? '_cancel' : '_close' | t }</button> 

まず速記を使用して適切な文字列を決定します。

関連する問題