Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Riot.js 2:具有falsy值的属性_Javascript_Riot.js - Fatal编程技术网

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>