Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >三元运算符和Vue滤波器

三元运算符和Vue滤波器
EN

Stack Overflow用户
提问于 2019-02-15 09:19:53
回答 2查看 1.4K关注 0票数 2

我在Vue中遇到了一个奇怪的行为。请参阅以下vue.html代码:

代码语言:javascript
运行
AI代码解释
复制
<label :text= 
    "$props.information ? (($props.information.primary || $props.information.secondary) | myFilter) : `No info`">
</label>

这将无法编译,并且Vue会抛出以下警告:

[Vue warn]: Property or method "myFilter" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option. (found in Root)

但是,当我没有使用三元运算符时:

代码语言:javascript
运行
AI代码解释
复制
<label :text=
    "($props.information.primary || $props.information.secondary) | myFilter">
</label>

它编译得很好,并且找到了myFilter。在boot.ts中声明了myFilter。为什么在第一个示例中抛出?在范围上没有区别。

EN

回答 2

Stack Overflow用户

发布于 2019-02-15 12:35:38

单个竖线是bitwise-or operator。Vue做了一些特殊的解析,将其解释为绑定中的“管道到过滤器”,但(我猜测)仅解释为绑定表达式末尾的一系列一个或多个匹配项,而不是中间,就像您的三元使用一样。

票数 3
EN

Stack Overflow用户

发布于 2020-03-23 13:49:03

表达式语法定义为(JavaScript expression) + (prop | filters)。过滤器只能附加到有效的JavaScript中-将过滤器引入JavaScript是不会发生的。

您已经可以在JavaScript表达式中使用$options.filters.myFilter(prop)

请参考此处:https://github.com/vuejs/vue/issues/5449#issuecomment-294337677

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54706060

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档