Я использую оболочку vue для jexcel и пытаюсь вызвать функцию отмены из вычисляемого поля панели инструментов. Кажется, я не могу получить доступ к экземпляру электронной таблицы. он выбрасывает this.undo — неопределенная ошибка

{amp}lt;template lang="html"{amp}gt; {amp}lt;div class="wrapper-jexcel"{amp}gt; {amp}lt;button class="" @click="getData(jExcelObj)"{amp}gt;Data{amp}lt;/button{amp}gt; {amp}lt;button class="" @click="jExcelObj.undo()"{amp}gt;Undo{amp}lt;/button{amp}gt; {amp}lt;input type="button" value="Add new row" @click="jExcelObj.insertRow()" /{amp}gt; {amp}lt;div id="spreadsheet" ref="spreadsheet"{amp}gt;{amp}lt;/div{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;/template{amp}gt; 
 import jexcelStyle from "jexcel/dist/jexcel.css"; // eslint-disable-line no-unused-vars import jexcel from "jexcel"; // eslint-disable-line no-unused-vars import db from '@/firebase/init' import firebase from 'firebase' export default { name: "workbook", data() { return { workbookid: this.$route.params.workbookid, myCars: [], columns: [ { type: "text", title: "Car", width: "120px" }, { type: "dropdown", title: "Make", width: "250px", source: ["Alfa Romeo", "Audi", "BMW", "Honda", "Porshe"] }, { type: "calendar", title: "Available", width: "250px" }, { type: "image", title: "Photo", width: "120px" }, { type: "checkbox", title: "Stock", width: "80px" }, { type: "numeric", title: "Price", width: "120px", mask: "$ #.##,00", decimal: "," }, { type: "color", width: "100px", render: "square" } ] }; },created() { this.getworkbook() }, methods: { onchange(){ console.log('change'); }, insertRowc() { console.log(this); // this.spreadsheet.insertRow(); }, undo(){ console.log('test'); jExcelObj.undo(); }, getData(payload) { console.log(this.myCars); console.log(payload); // this.myCars = payload.data } }, computed: { jExcelOptions() { var self = this; return { data: this.myCars, columns: this.columns, search: true, //fullscreen: true, minDimensions: [20, 40], defaultColWidth: 100, allowComments: true, toolbar: [ { type:'i', content:'undo', onclick:function() { return jExcelObj.undo(); } }, { type:'i', content:'redo', onclick:function() { this.redo(); } }, { type:'i', content:'save', onclick:function () { test.download(); } }, { type:'select', k:'font-family', v:['Arial','Verdana'] }, { type:'select', k:'font-size', v:['9px','10px','11px','12px','13px','14px','15px','16px','17px','18px','19px','20px'] }, { type:'i', content:'format_align_left', k:'text-align', v:'left' }, { type:'i', content:'format_align_center', k:'text-align', v:'center' }, { type:'i', content:'format_align_right', k:'text-align', v:'right' }, { type:'i', content:'format_bold', k:'font-weight', v:'bold' }, { type:'color', content:'format_color_text', k:'color' }, { type:'color', content:'format_color_fill', k:'background-color' }, ] }; } }, mounted: function() { //console.log(this.jExcelOptions); //console.log(this.$refs["spreadsheet"]); const jExcelObj = jexcel(this.$refs["spreadsheet"], this.jExcelOptions); // Object.assign(this, jExcelObj); // pollutes component instance Object.assign(this, { jExcelObj }); // tucks all methods under jExcelObj object in component instance // console.log(this.jExcelObj); } }; 

я должен передать экземпляр в вычисляемый метод? Я изо всех сил пытаюсь понять, как управлять экземплярами плагина оболочки и доступа к методам.

Вы можете получить экземпляр, используя это:

 var yourTableInstance = document.getElementById('spreadsheet').jexcel; yourTableInstance.undo(); yourTableInstance.getData();