代码之家  ›  专栏  ›  技术社区  ›  César Alberca

如何使用VueJS动态添加属性?

  •  0
  • César Alberca  · 技术社区  · 6 年前

    我知道我可以用 v-bind 属性 ,而不是值。类似的内容(尽管这是无效的):

        <a
          :href="url"
          {{ downloadable ? 'download' : null }}
          class="link"
          @click="onClick">
          {{ text }}
        </a>
    

    注意:我没有使用JSX

    我在考虑用 $attrs https://vuejs.org/v2/api/#vm-attrs )但它是只读的。

    有办法在Vue上这样做吗?

    解决方案:

    new Vue({
      el: '#app',
      data() {
        return {
           msg: 'Inspect element to test',
           downloadable: true
        }
      },
      computed: {
        dynamicAttribute() {
          if(!this.downloadable) {
             return null
          }
    
          return { [`download`]: "link or w/e" }
        }
      }
    })
    

    HTML格式:

      <a v-bind="dynamicAttribute">{{msg}}</a>
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   dziraf    6 年前

    如果你想让它看起来像:

    <a ... download="value">text</a>

    具有 download downloadable 是真的,你可以用 v-bind :

    https://jsfiddle.net/eywraw8t/274691/

    你可以通过改变 可下载 判断正确或错误并检查元素。

        2
  •  1
  •   santanu bera    6 年前

    v-bind:disabled="isActive"
    

    如果isActive为true,则属性 残疾人 将被添加到元素中,否则将被删除。此机制不适用于其他非布尔属性。

    element.setAttribute('attributeName', 'value');