Vue with html-renderer global function
Vue에서 html렌더러 사용 시 Vue의 methods를 사용하기 위해선 window/global scope에서 사용 해주셔야 합니다.
html 렌더러로 생성한 버튼 클릭 시 이벤트가 호출되는 예제입니다.
// Realgrid.vue
gridView.columnByName("Monetary").renderer = {
type: "html",
callback: function (grid, cell) {
//
var str = `
<button onclick="globalFunction(${cell.index.itemIndex})">버튼1</button>
<button onclick="globalFunction2(${cell.index.itemIndex})">버튼2</button>
`;
return str;
},
};
created: function () {
// eslint-disable-next-line no-undef
functionOutsideVue(this); // function outside Vue scope called
},
methods: {
callbackFunctionInsideVueComponent(itemIndex) {
var v = gridView.getValues(itemIndex);
alert(v.KorName);
},
callbackFunctionInsideVueComponent2(itemIndex) {
var v = gridView.getValues(itemIndex);
alert(v.Gender);
},
},
window.functionOutsideVue = function (vuecomponent) {
window.vm2 = vuecomponent;
};
// index.html
function globalFunction(itemIndex) {
vm2.callbackFunctionInsideVueComponent(itemIndex);
}
function globalFunction2(itemIndex, event) {
vm2.callbackFunctionInsideVueComponent2(itemIndex);
}
해당 예제 소스는 아래 링크에서 다운 받으실 수 있습니다.
https://github.com/realgrid/realgrid2-examples/tree/master/vue3_global_scope_sample (opens in a new tab)