2016-01-13 7 views
5

私はゼロの値(0)を持つことができる属性を持っている必要がありRiot.js 2:falsy値を持つ属性

暴動テンプレート:

<my-tag time="{ time }"> 

this.time = condition ? '10' : '0' 

</my-tag> 

望ましい結果:

<my-tag time="0"></my-tag> 

しかし、偽の値を持つ場合、Riotは属性全体を自動的に省略します。

<my-tag></my-tag> 

私の現在の回避策:つまり

this.on('updated',() => { 
    $(this.root).attr('time', this.time) 
}) 

、私はtimeプロパティの正確な値を持つようにtime属性を必要としています。

編集:これは2.2.4以降に変更されたよう

が見えます。

Demo with Riot 2.2.4

が、これは期待通りに動作します - 両方のタグが

Demo with Riot 2.3.13

が、これは失敗した値に従ってで属性timeをレンダリングしている - falseに設定された属性を持つタグがあり、全属性が

+0

私はあなたが置くことができるかわからないが生成されますその定義におけるカスタムタグの式。式を内部ノードに置くことはできませんか?また、ブール値の属性が偽(http://riotjs.com/guide/#expressions)である場合、ブール値の属性(チェック、選択など)のみが削除されます。 – Antoine

+0

@Antoine:はい、カスタムタグ自体に式を入れることができます。それは例外として動作します。それをいくつかの内部ノードに置くことは同じ効果を持ちます。 –

+0

それは奇妙です、私は子供のノード(最新ではなく、v2.2.4を使用して)で問題を再現することはできません。私はコンパイラ(gihrigのワークフローに似ています)を使用していないので、タグそのものをテストすることはできません。 – Antoine

答えて

0

トライを削除しましたあなたの属性の先頭に「riot-」と表示されます

<my-tag riot-time="{ time }"> 

これは私の場合、私が使用していないことを

<div class="fldr" riot-data-stat="{ s }"> 

注意を働いた

<div class="fldr"> 

としてレンダリングするとき、S = 0、私は同様の問題に

<div class="fldr" data-stat="{ s }"> 

を持っていましたriotコンパイラでは、コンパイラが生成するJavascriptを記述していますが、これを動作させるにはRiotコンパイラをバイパスする必要があります。コンパイルしたmy-tag.jsを見てそこから移動してください。これは、暴動のv2.3.18で動作しているhttp://riotjs.com/api/#manual-construction

1

riot.tag()の

暴動のAPIドキュメント:

<my-tag time="{ time ? '10' : '0'}"> 
    <script> 
    this.time = false; 
    </script> 
</my-tag> 

<my-tag time="0"></my-tag> 
関連する問題