繁体   English   中英

RactiveJS:如何在模板表达式中测试相等性?

[英]RactiveJS: how can I test equality in a template expression?

我正在使用Ractive.JS绑定:

var alertsBinding = new Ractive({
    el: '.alerts',
    template: alertsTemplate,
    data: {
        alerts: alerts,
        selectedAlertID: null
    }
});

模板使用模板表达式来检测某项是否为当前选定的项,并相应地添加一个类:

<div class="alert {{ id === selectedAlertID ? 'selected' }}">
  ...
</div>

选择一个项目后,我运行:

alertsBinding.set({selectedAlertID: selectedAlert.id});

设置后,我可以看到条件始终为假,即使条件应该为真。 我还通过添加以下内容进行了检查:

id{{ id}} selected{{ selectedAlertID}}

在警报内部,以确认该项目已被实际选择。

在此处输入图片说明

但是条件仍然是错误的,并且没有设置类。

如何在模板表达式中测试相等性?

该表达式必须是合法的JavaScript; 在这种情况下,除了替代方案之外,还需要有替代方案:

<div class="alert {{ id === selectedAlertID ? 'selected' : '' }}">
  ...
</div>

当解析器看不到冒号后跟另一个表达式时,它将停止尝试解析该三进制表达式,而退回到将其视为沼泽标准引用的方式。 如果解析器在这些情况下提供了更多反馈,可能会有所帮助-我在GitHub上发布了一个问题

另外,您也可以

<div class="alert {{# id===selectedAlertID }}selected{{/}}">
  ...
</div>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM