2017-07-12 4 views
0

I folgende Komponente haben:Vue2 - binding Attribut in Komponenten

Vue.component('ordering-filters', { 
    template: ` 
     <div class="arrow-group"> 
      <a href="#" 
       :class="{'active' : isActive, 'fa fa-sort-asc fa-lg text-muted': true}" 
       aria-hidden="true" 
       @click="orderCountries({orderBy: orderBy, order: 'asc'})"         > 
      </a> 
      <a href="#" 
       :class="{'active' : isActive, 'fa fa-sort-desc fa-lg text-muted': true}" 
       aria-hidden="true" 
       @click="orderCountries({orderBy: orderBy, order: 'desc'})"> 
      </a> 
     </div> 
    `, 

    methods: { 

     orderCountries(params){ 
      this.isActive = !this.isActive; 
     } 

    }, 

    data() { 
     return { 
      orderBy: '', 
      isActive: false 
     } 
    } 

}); 

Wie kann ich binden orderBy Parameter dem HTML-Tag:

<td class="col-md-6">Country Name 
    <ordering-filters></ordering-filters> 
</td> 

Und wie kann ich isActive Parameter ändern für das angeklickte Element (setze es auf true und setze es auf false für das Element, auf das nicht geklickt wurde)?

Antwort

0

1) Wenn Sie sagen "Wie kann ich einen orderBy Wert an die ordering-filters Instanz übergeben", dann suchen Sie nach props.

props: { 
    orderBy: { 
     type: String, 
     required: true 
    } 
} 

Dann

<ordering-filters :order-by="someStringVal"></ordering-filters> 

2) Für Ihre zweite Frage, Sie müssen nicht isActive brauchen.

<a href="#" :class="{'active' : order === 'asc'}" 
    @click="orderCountries({orderBy, order: 'asc'})"></a> 
<a href="#" :class="{'active' : order === 'desc'}" 
    @click="orderCountries({orderBy, order: 'desc'})"></a> 

methods: { 
    orderCountries(params){ 
     this.order = params.order 
    } 
} 
+0

Ich ging in diese Richtung auf den ersten bekam aber folgende Fehler (die Fehler sind gleich mit Ihrem Beispiel): ** [Vue warn]: Eigenschaft oder Methode „name“ definiert ist, nicht auf die Instanz, sondern verwiesen während des Renderns Stellen Sie sicher, dass reaktive Dateneigenschaften in der Datenoption deklariert sind. (gefunden in ) ** ** [Vue warn]: Ungültige Requisite: Typprüfung fehlgeschlagen für Requisite "orderBy". Erwartete Zeichenfolge, wurde nicht definiert. in ---> ** Ich dachte, ich auf etwas fehlte, oder dass ich in der falschen Richtung. Es ist ein bisschen schwer, meine Gedanken in Vue einzuhüllen:/ – Sasha

+0

@Sasha Ausgehend von diesem Kommentar schlage ich vor, dass Sie den Einführungsteil von Vue Docs durchgehen. Weil Sie offensichtlich nicht einmal die Basis des MVVM-Konzepts kennen, z.B. Was ist eine "Bindung"? – Leo

Verwandte Themen