Riot.js 2:具有虚假价值的属性

时间:2016-01-13 09:03:20

标签: javascript riot.js

我需要一个值为零(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开始看起来已经发生了变化。

Demo with Riot 2.2.4

这可以按预期工作 - 两个标记都呈现了具有相应值

的属性time

Demo with Riot 2.3.13

此失败 - 属性设置为false的代码已移除整个属性

2 个答案:

答案 0 :(得分:1)

这是在暴乱v2.3.18中工作:

SELECT SYSDATE FROM DUAL;

将生成

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

答案 1 :(得分:0)

尝试使用&#34; riot - &#34;

为您的属性添加前缀
<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()http://riotjs.com/api/#manual-construction

的Riot API文档