vue.js属性的条件呈现

pil*_*lat 8 vue.js vuejs2

我想了解在Vue.js中有条件地呈现HTML属性的最佳方法是什么.例如,data-toggle="tooltip"如果当前实例有工具提示消息,请添加.

我现在的代码:

<span
  :data-toggle="!!col.col_spec.tooltip ? 'tooltip' : ''"
  :title="col.col_spec.tooltip"
>
  {{ col.col_spec.title }}
</span>
Run Code Online (Sandbox Code Playgroud)

虽然,我不太喜欢第二行...即使我在这里使用计算属性data-toggle,当没有工具提示显示时,我宁愿根本没有属性.

小智 15

非常优雅的解决方案:

<span
  :data-toggle="!!col.col_spec.tooltip ? 'tooltip' : false"
  :title="col.col_spec.tooltip"
>
  {{ col.col_spec.title }}
</span>
Run Code Online (Sandbox Code Playgroud)

是,是的,是的,只需要没有空字符串,但布尔值为false

  • 这个答案是有条件地添加属性的唯一好处和[官方推荐](https://vuejs.org/v2/guide/syntax.html#Attributes)方式.但是,要删除该属性,它不一定必须是"false",但也可以是"null"或"undefined". (4认同)

Ber*_*ert 5

就像是:

<span ref="column">
  {{ col.col_spec.title }}
</span>
Run Code Online (Sandbox Code Playgroud)

在Vue:

mounted(){
    if (this.col.col_spec.tooltip){
      this.$refs.column.setAttribute("data-toggle", this.col.col_spec.tooltip);
    }
}
Run Code Online (Sandbox Code Playgroud)