2016-12-25 1 views
2

Ich möchte eine Sterne-Rating-Komponente in Vue.js machen und das Problem ist jetzt, dass, nachdem ich auf die Sterne klicke, es ausblendet, bevor das Endergebnis angezeigt wird. Unten ist die JSFiddle Link:Sterne verblassen nach dem Klick in Vue.js Komponente

https://jsfiddle.net/L6L34ybr/5/

, die von der Wirkung verschieden ist, wo ich meistens den Code kopiert haben:

http://codepen.io/nouveller/pen/qOxKBJ

ich denke, es hat etwas mit der rating Eigenschaft zu tun hat .

Und jetzt habe ich die Klasse inline binden :class="{selected: ((value >= rating && value != null))}.

Aber ich möchte es mit einem Objekt wie :class="selected: someFunction(rating)" binden und dann schreiben Sie die someFunction(rating) in der berechneten Eigenschaft oder woanders nicht in der HTML. Gibt es eine Möglichkeit, es zu machen?

Antwort

3

Statt

@click="setRate(rating)" 

Ihr Click-Ereignis definiert wie folgt:

@click.prevent="setRate(rating)" 

Dies wird das Click-Ereignis von der Ursache des Problems zu stoppen, das ist, dass es für die zweimal, einmal den Schuss Label und einmal für die Eingabe.

Was Ihre zweite Frage, können Sie Ihre someFunction() in Ihrer Komponente methods Objekt wie folgt hinzu:

methods: { 
    someFunction: function (value, rating) { 
     return value >= rating && value != null; 
    } 
} 

Dann Sie es in Ihrem Markup aufrufen können wie folgt:

<label :class="{selected: someFunction(value, rating)}"> 
+0

Aber warum Brennen zweimal würde es verblassen lassen? Es scheint zweimal das gleiche Ergebnis wie einmal zu haben. –

+0

Das zugrundeliegende Problem ist ein Konflikt mit der 'value' Eigenschaft, da sie manuell in' setRate() 'geändert wird, aber durch Klicken auf'

+0

Ich dachte, die Radios hätten die Werte 1,2,3,4,5 und hätten das nicht überprüft (weshalb ich gedacht habe, dass sie die "Wert" -Stütze auf den richtigen Wert von 1,2,3 setzen würde, 4,5). Stellt sich heraus, dass ihre Werte nicht gesetzt sind und der Standardwert ist "on" ', was" NaN "ist, wenn in Zahl konvertiert wird, also" (Wert> = Bewertung && Wert! = Null) "ist immer falsch, so dass die Sterne verblasst sind aus... –

Verwandte Themen