Javascript Riot.js 2:具有falsy值的属性
我需要一个值为零的属性(Javascript Riot.js 2:具有falsy值的属性,javascript,riot.js,Javascript,Riot.js,我需要一个值为零的属性(0) 防暴模板: <my-tag time="{ time }"> this.time = condition ? '10' : '0' </my-tag> 换句话说,我需要time属性具有time属性的精确值 编辑: 从2.2.4开始,情况似乎发生了变化 这与预期的一样-两个标记都使用相应的值呈现属性time 此操作失败-属性设置为false的标记已删除整个属性请尝试在属性前面加上“riot-” 我也有类似的问题 <div c
0
)
防暴模板:
<my-tag time="{ time }">
this.time = condition ? '10' : '0'
</my-tag>
换句话说,我需要time
属性具有time
属性的精确值
编辑:
从2.2.4开始,情况似乎发生了变化
这与预期的一样-两个标记都使用相应的值呈现属性time
此操作失败-属性设置为
false
的标记已删除整个属性请尝试在属性前面加上“riot-”
我也有类似的问题
<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文档这在Riot v2.3.18中运行:
<my-tag time="{ time ? '10' : '0'}">
<script>
this.time = false;
</script>
</my-tag>
这个时间=假;
将产生
<my-tag time="0"></my-tag>
我不确定是否可以将表达式放在自定义标记的定义中。你不能把表达式放在某个内部节点上吗?此外,如果布尔属性的值为falsy(),则仅删除布尔属性(例如,选中、选中)。@Antoine:是的,您可以将表达式放入自定义标记本身。这是例外。把它放在一些内部节点上也有同样的效果。这很奇怪,我不能在子节点上重现这个问题(使用v2.2.4,不是最新版本)。我没有使用编译器(类似于gihrig的工作流程),所以我无法对标记本身进行测试。@Antoine:编辑了我的问题-看起来这在2.2.4中有效
<div class="fldr">
<div class="fldr" riot-data-stat="{ s }">
<my-tag time="{ time ? '10' : '0'}">
<script>
this.time = false;
</script>
</my-tag>
<my-tag time="0"></my-tag>