6

我需要一个属性值为零(0

防暴模板:

<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 以来,这似乎发生了变化。

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 回答