Esistono diversi modi per farlo.
Edit: Migliorata 2)
E 'possibile utilizzare v-modello, proprio come in 2) ma invece di utilizzare il valore direttamente nel filtro orderBy, è possibile utilizzare computed proprieties
computed: {
sortKey: {
get: function() {
return this.sorting.split(' ')[0]; // return the key part
}
},
sortOrder: {
get: function() {
return this.sorting.split(' ')[1]; // return the order part
}
}
}
in questo modo, SortKey e sortOrder sarà disponibile come una proprietà normale in voi filtrare:
v-repeat="items | orderBy sortKey sortOrder"
1) utilizzare JavaScript evento:
Se non si specifica alcun parametro, l'oggetto evento nativo verrà passato automaticamente
<select class="sort-filter" v-on:change="sortBy">
È quindi possibile utilizzare in questo modo:
methods: {
sortBy: function(e) {
console.log(e.target.value);
},
}
2) Uso di v-modello
È possibile aggiungere la direttiva v-modello
<select name="test" v-model="sorting" v-on:change="sortBy">
In questo modo il valore sorting
sarà aggiornato ad ogni cambiamento.
È possibile aggiungere questo valore nell'oggetto di dati di voi ViewModel ad essere più chiaro:
data: {
sorting: null // Will be updated when the select value change
}
È quindi possibile accedere al valore, come nel metodo:
methods: {
sortBy: function() {
console.log(this.sorting);
},
}
Se avete solo bisogno per aggiornare il valore sortKey
, questo metodo non è nemmeno necessario.
3) Altro modo strano
È apparentemente possibile utilizzare il valore del modello come parametro.
<select name="test" v-model="sortKey" v-on:change="sortBy(sortKey)">
Questo funziona ma non vedo il punto.
methods: {
sortBy: function(sortKey) {
console.log(sortKey);
},
}
Grazie mille, ci proverò domani in ufficio. Il motivo per cui non sto usando v-model è perché il valore contiene anche la direzione di ordinamento, come asc o desc. Se uso 'v-model' vue proverò ad ordinare la base dei risultati per l'attributo' title asc' che non esiste, quindi voglio inviare il valore selezionato a una funzione, dividerlo e usare title come sort attribute e asc o desc come direzione. Spero che abbia senso quello che sto dicendo. Grazie. – rmagnum2002
Ok, penso di aver capito, modifico la mia risposta e aggiungo un'altra possibile soluzione. – Needpoule
Una cosa da aggiungere, 'sortOrder' dovrebbe essere un tipo booleano, vero/falso, quindi ho dovuto verificare se sortOrder è uguale asc: ' return this.sorting.split ('') [1] === 'asc '? false: true' non accetta altri valori oltre al valore booleano per il parametro 3d nel filtro. Grazie. – rmagnum2002