2017-04-04 12 views
13

Mój składnik vue jest tak:Jak rozwiązać Interpolacja w atrybutach została usunięta. Użyj v-bind lub skrótów dwukropka? Vue.JS 2

<template> 
    <div> 
     <div class="panel-group" v-for="item in list"> 
      ... 
      <div class="panel-body"> 
       <a role="button" data-toggle="collapse" href="#purchase-{{ item.id }}" class="pull-right" aria-expanded="false" aria-controls="collapseOne"> 
        Show 
       </a> 
      </div> 
      <div id="purchase-{{ item.id }}" class="table-responsive panel-collapse collapse" role="tabpanel"> 
      ... 
      </div> 
     </div> 
    </div> 
</template> 

<script> 
    export default { 
     ... 
     computed: { 
      list: function() { 
       return this.$store.state.transaction.list 
      }, 
      ... 
     } 
    } 
</script> 

Po wykonaniu istnieje błąd tak:

Vue template syntax error:

id="purchase-{{ item.id }}": Interpolation inside attributes has been removed. Use v-bind or the colon shorthand instead.

Jak mogę go rozwiązać?

Odpowiedz

25

użycie kodu JavaScript wewnątrz v-bind (lub skrót ":"):

:href="'#purchase-' + item.id" 

i

:id="'purchase-' + item.id" 

Albo jeśli używasz ES6 +:

:id="`purchase-${item.id}`" 
+0

To działa. Wielkie dzięki –

+0

Każdy pomysł, jak zrobić to dla obiektu, zamiast łańcucha? –

+0

@MikedeKlerk po prostu usuń nawiasy klamrowe: Jeśli chcesz powiązać obiekt 'foo', składnia v1 będzie miała postać': my-object = "{{foo}}" Składnia '' i v2 będzie następująca: ': my-object =" foo "'. – thanksd

Powiązane problemy