我可以使用多个空合并运算符吗?在Vue中就像在php中一样?

蜥蜴Derad:

将我的代码从php转换为js时,我无法正常工作:

searchEntity.translations[0].translation ?? searchEntity.name ?? searchEntity.name_en

我尝试使用两个 ||

searchEntity.translations[0].translation || searchEntity.name || searchEntity.name_en

但是vue编译器仅看到第一个,并且在应渲染第二个时不会显示整个组件,如果我仅显示第二个,则一切正常:

searchEntity.name || searchEntity.name_en

但是,实体是多态的,可以是这三个中的任何一个。

我不想使用v-if,它需要一个重复的代码

(代码在模板中,未计算)

编辑

检查翻译是否存在于计算函数中以解决问题

translatedName: function () {
                if(this.searchEntity.translations) {
                    return this.searchEntity.translations[0].translation
                } else {
                    return this.searchEntity.name || this.searchEntity.name_en || this.searchEntity.translation_fallback;
                }
            }
mplungjan:

JS不会在错误的项目上捷径

错误并不像在PHP中那样虚假

您可以在前面使用三元

const searchEntity1 = {
  translations: [{
    translation: "Navn"
  }],
  name: "Nom",
  name_en: "Name"
}
const searchEntity2 = {
  translations: null,
  name: "Nom",
  name_en: "Name"
}

const searchEntity3 = {
  translations: null,
  name: null,
  name_en: "Name"
}

const getTranslation = searchEntity => {
  const translations = searchEntity.translations;
  return translations && translations.length ? 
     translations[0].translation : searchEntity.name || searchEntity.name_en;
};
new Vue({
  el: '#example',
  data: {
    name1: getTranslation(searchEntity1),
    name2: getTranslation(searchEntity2),
    name3: getTranslation(searchEntity3)
  }
})
h3 {
  margin-bottom: 5%;
}
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<html>

<body>
  <div id="example">
    <p>{{ name1 }}</p>
    <p>{{ name2 }}</p>
    <p>{{ name3 }}</p>
  </div>
</body>

</html>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我们可以像在Vue中一样在Polymer中使用模板语法吗?

我可以使用`??`(空合并运算符)代替空吗?

我可以在VB.NET中给枚举一个属性(就像在Java中一样)吗?

我可以在某个区域打开Ionic 3条形码扫描仪吗?就像在div中一样

我们可以像在UBUNTU中一样使用RedHat 6中的exe文件吗?

我可以像在 asp.net core mvc 中一样使用 service 在 blazor 中操作 dbcontext 吗?

我可以像在JS中一样访问类的构造函数变量吗?

我们可以像在kdb中一样在Excel中做asof join吗

我可以像在LESS中一样在标准CSS中嵌套类吗

我可以像在 C++ 中一样在 python 中取消引用迭代器吗?

我如何创建一组重复的条纹,就像在美国国旗中一样

是否有任何命令可以列出“本地”包?就像在 Synaptic GUI 中一样

如何在 Dapper Query 中的动态参数中传递多个条件,就像我们传递 IN 运算符一样

关闭频道,就像在Go中一样

CURDATE()函数就像在mongoDB的mysql中一样

postgresql 就像在 jsonb 数组中一样

Python REPL 就像在 Clojure 中一样

我可以使用like运算符使用数组比较多个条件吗?

我可以在=>运算符之后合并一个方法的多个调用吗?

PHP脚本帮助输出yum数据,就像在shell中一样

我们可以使用和运算符来组合多个jQuery事件吗

如何仅使用css绘制错误图标,就像在图像中一样

就像在julia中一样,在jupyter笔记本中使用λ,φ,α,...

使用 Retrofit 发出 POST Json 请求,就像在 jQuery ajax 中一样

如何在 Dart 中使用 **kwarg(就像在 Python 中一样)

我可以像在C ++中一样在R中拥有多个独立的随机数生成器吗?

我可以使用其他PHP文件中的“使用”运算符吗?

我可以使用逻辑 OR(||) 运算符而不是逻辑 AND(&&) 运算符吗

我可以使用按位运算符代替逻辑运算符吗?