2017-11-29 2 views
1

Modul: https://github.com/matfish2/vue-tables-2Reload Daten von vue-Tabellen-2 (Vuex)

Ich bin eine CRUD app zu schaffen. Wie kann ich die über den Ajax-Aufruf in vue-tables-2 abgerufenen Daten erneut laden? Ich wollte die Tabelle neu laden, nachdem eine Update-Anweisung irgendwo in meiner App ausgeführt wurde.

Vue-Tabellen verwendet Vuex in meinem Setup.

<v-server-table 
    name="UserAdmin" url="admin/master/?format=json" :columns="columns" :options="options"> 
</v-server-table> 

BEARBEITEN: Javascript-Code der Tabelle für Dateneigenschaften hinzugefügt.

export default { 
    data() { 
     return { 
      columns: ['ID','NAME', 'POSITION', 'APPLICATIONS','DESCRIPTION','STATUS','ENCODED_BY'], 
      options: { 
       responseAdapter: (resp) => { 
        resp = resp.map(item => ({ 
         ID: item.ID, 
         FK_ID: item.FK_ID, 
         NAME: `${item.FIRSTNAME} ${item.LASTNAME}`, 
         POSITION: item.POSITION, 
         APPLICATIONS: item.APPLICATIONS, 
         DESCRIPTION: item.DESCRIPTION, 
         STATUS: item.STATUS, 
         ENCODED_BY: item.ENCODED_BY, 
         TOTAL: item.TOTAL 
        })); 
        let count; 
        if(resp[0] != null) { 
         count = resp[0]['TOTAL'] 
        } 
        else { 
         count = 0 
        } 
        return { 
         data: resp, 
         count: count 
        } 
       }, 
       headings: { 
        'ID': <span># &nbsp;</span>, 
        'NAME':'Name', 
        'POSITION':'Position', 
        'APPLICATIONS':'Applications', 
        'DESCRIPTION':'Description', 
        'STATUS': 'Status', 
        'ENCODED_BY':'Encoded By', 
        'edit': 'Options' 
       }, 
       columnsClasses: { 
         ID: 'col-md-1', 
         NAME:'col-md-2 pointer', 
         POSITION: 'col-md-2', 
         APPLICATIONS: 'col-md-2', 
         DESCRIPTION: 'col-md-2', 
         STATUS: 'col-md-1', 
         ENCODED_BY: 'col-md-2', 
       }, 
       templates: { 
        NAME: (h, row) => { 
         return <a on-click={() => this.setUpdateID(row) }>{row.NAME}</a> 
       }, 
       APPLICATIONS: (h,row) => { 
        return (<ul>{JSON.parse(row.APPLICATIONS).map((val)=>(<li>{val}</li>))}</ul>); 
       }, 
       STATUS: (h, row) => { 
        if(row.STATUS == 1) { 
         return <span class="label label-success">Active</span> 
        } 
        else if(row.STATUS == 0) { 
         return <span class="label label-danger">Inactive</span> 
        } 
       } 
       }, 
      }, 
     } 
    }, 
    methods: { 
     setUpdateID: function(row) { 
      this.$store.commit('SET_UPDATE_ID', row.FK_ID); 
     } 
    } 
} 
+0

es wäre nützlich, wenn Sie Ihre JSON enthalten. Entspricht es der Spezifikation hier: https://github.com/matfish2/vue-tables-2#server-side – 82Tuskers

+0

@ 82Tuskers Ich habe den Code hinzugefügt, siehe oben. Was ich gerade mache, ist ein v-if zur Tabelle hinzuzufügen, wenn ich eine UPDATE-Anweisung ausführe, setze ich dann v-if auf false und setze es nach 250 Sekunden wieder auf true. Ich weiß nicht, ob es einen besseren Weg gibt –

+0

Sie könnten versuchen, 'this. $ forceUpdate()' nach dem Ausführen der UPDATE-Anweisung auszuführen – Jpod

Antwort

1

Wie dokumentiert, sollten Sie die refresh Methode verwenden. Sie können über refshere

<v-server-table ref="table" 
    name="UserAdmin" url="admin/master/?format=json" :columns="columns" :options="options"> 
</v-server-table> 

Javascript lesen:

methods:{ 
    onUpdate() { 
    this.$refs.table.refresh(); 
    } 
}