6

ゼロの値を持つことができる属性が必要です ( 0)

暴動のテンプレート:

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

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

</my-tag>

望ましい結果:

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

ただし、Falsy 値がある場合、Riot は自動的に属性全体を省略します。

<my-tag></my-tag>

私の現在の回避策:

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

つまり、プロパティtimeの正確な値を持つ属性が必要ですtime

編集:

これは 2.2.4 から変更されたようです。

Riot 2.2.4 のデモ

これは期待どおりに機能します - 両方のタグがtime値に応じて属性をレンダリングしました

Riot 2.3.13 でのデモ

これは失敗します - 属性が に設定されたタグにfalseは、属性全体が削除されています

4

2 に答える 2

1

これは riot v2.3.18 で動作しています:

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

発生します

<my-tag time="0"></my-tag>
于 2016-04-07T12:42:41.307 に答える
0

属性の前に「riot-」を付けてみてください

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

同様の問題がありました

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

s = 0 の場合、次のようにレンダリングされます。

<div class="fldr">

これは私の場合はうまくいきました

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

私は riot コンパイラを使用していないことに注意してください。コンパイラが生成する Javascript を書いています。これを機能させるには、Riot コンパイラをバイパスする必要があるかもしれません。コンパイルした my-tag.js を見て、そこから進んでください。

riot.tag() に関する Riot API ドキュメントhttp://riotjs.com/api/#manual-construction

于 2016-01-15T03:32:33.953 に答える