Ich bin neu in VueJS, also ist dies wahrscheinlich ein sehr einfaches Problem, aber hier geht es.VueJS - Erstellen einer Tabelle, aber in der Lage, auf eine Zeile zu klicken, um das Detail dieser Zeile zu öffnen
Ich rufe meine API an, um eine Reihe von Datensätzen zu erhalten. Ich möchte diese Datensätze in einer einfachen Tabelle anzeigen, aber dann möchte ich in der Lage sein, auf einen Link in der letzten Zelle der Zeile zu klicken und an eine neue URL gesendet zu werden - eine URL für das Detail dieses Objekts.
Hier ist, was ich bisher:
Vue Stuff:
var vm = new Vue({
el: '#league-table',
data: {
leagues: [],
apilink: '/api/leagues/',
},
mounted: function() {
this.getLeagues();
},
methods: {
getLeagues: function() {
var self = this
$.get('/api/leagues/', function(data){
$.each(data, function(index, obj) {
self.leagues.push(obj)
});
});
},
sayConsole: function() {
console.log("OUTPUT here....")
}
}
});
HTML-Bestellung:
<div class='card__content'>
<div id='league-table' class='table-responsive'>
<table class='table table--lg team-roster-table table-hover'>
<thead>
<th class='team-roster-table__name'>ID</th>
<th class='team-roster-table__name'>Name</th>
<th class='team-roster-table__name'>Characters</th>
<th></th>
</thead>
<tbody>
<tr v-for='league in leagues'>
<td class='team-roster-table__number'>{{ league.id }}</td>
<td class='team-roster-table__name'>{{ league.name }}</td>
<td class='team-roster-table__name'>{{ league.max_players }}</td>
<td class='team-roster-table__name'>
<a v-on:click='sayConsole'>{{ league.id }}</a>
</td>
</tr>
</tbody>
</table>
</div>
</div>
Wenn ich die Seite zu öffnen, wird die Tabelle richtig präsentiert und alle Daten werden korrekt geladen. Es ist jedoch das Klicken des Links in der letzten Zelle, die nicht funktioniert. Ich glaube, ich habe ein Problem mit dem Umfang - etwas darüber, wie die Zeile keine Methode hat sayConsole
, aber ich bin mir nicht sicher (das kann ich aus dem Tag der Erforschung des Problems feststellen).
Idealerweise möchte ich eine URL haben, die mich zu einer Detailseite für dieses Objekt bringt.
was, wenn Sie die vuejs devtools und eine weitere Zeile der Tabelle manuell verwenden geschieht hilft hinzufügen? Bleibt die neue letzte Zeile nicht anklickbar und die vorletzte Zeile ist anklickbar? – dargue3
@ dargue3 Ich weiß nicht, wie man mit den Dev-Tools eine neue Zeile hinzufügt. Ich kann das Array sehen, dem ich Werte hinzufüge, aber ich bin nicht sicher, wie man eine andere Reihe manuell hinzufügt. – Garfonzo
vielleicht fügen Sie einen Button, der 'leagues.push (dummyLeague)' und sehen, ob das das Problem klarer macht – dargue3