Prerender vue.js 2.0 컴포넌트(이와 유사).vue 1로 $140)
그리드 스택을 위해 재사용 가능한 부품을 만들려고 합니다.
같은 일을 할 수 있는 간단한 방법을 찾을 수 없다.this.$compile
vue 1의 메서드.나는 이 예를 본 적이 있다.
vue 스크립트는 다음과 같습니다.
export default {
components: {
'horizontal-fab': HorizontalFab,
'd-widget': DWidget
},
data () {
return {
}
},
mounted () {
var options = {
cellHeight: 80,
verticalMargin: 10,
width: 3
}
$('#grid-stack').gridstack(options)
},
addWid () {
var grid = $('#grid-stack').data('gridstack')
grid.addWidget('<d-widget></d-widget>', 0, 0, 1, 1, true)
},
addGraph () {
var grid = $('#grid-stack').data('gridstack')
grid.addWidget(`
<div class="grid-stack-item" data-gs-width="4">
<div class="grid-stack-item-content">
<p>HTML (added)</p>
</div>
</div>
`, 0, 0, 1, 1, true)
}
다음은 관련 html입니다.
<span @click="addGraph" >Line graph</span></li>
<span @click="addWid">Sparklines</span></li>
...
<div id="grid-stack" class="grid-stack grid-stack-3">
<d-widget data-gs-x="0" data-gs-y="0" data-gs-width="1" data-gs-height="1"></d-widget>
</div>
문제는 다음과 같습니다.
그 방법addGraph
완벽하게 동작합니다.addWid
- 없습니다.html에 직접 컴포넌트로 삽입해도 동작합니다.
컴포넌트의 html이 프리 컴파일 되어 있지 않기 때문에 그런 것 같습니다.에 의해 해결되었다.compile
하지만 vue1에서는요.
내가 이미 시도한 것:
Mount
여기에 제시된 바와 같이 정의된 컴포넌트를 볼 수 없었기 때문에 동작하지 않았던 것 같습니다.- 나는 그것을 작동시킬 수 있는 가능성이 있다는 것을 봐왔다.
push
, 여기에 제시된 바와 같이.그러나 아직까지는 충분한 지식이 없기 때문에 이러한 방식으로 작동하는 방법을 찾을 수 없습니다. 여러 유형의 블록이 있기 때문에 이러한 블록은 모두 그리드 스택에서 동일한 요소로 취급해야 하기 때문입니다.또한 동일한 컴포넌트를 다른 파라미터로 1개의 보드 내에서 여러 번 사용할 수 있습니다. - 컴파일 하는 방법이 있는 걸 봤어요
standalone component
여기처럼 추천하지 않는 것 같아서 다른 방법을 찾고 있어요. - 나도 이런 거 봤어
render functions
하지만 다시 말씀드리지만, 안타깝게도 제 실력은 그다지 뛰어나지 않습니다.
요약하자면, 이러한 방법에 대한 조언이나 구현 방법에 대한 권장 사항을 알려주시면 감사하겠습니다.문제는 요소만 삽입하는 것이 아니라 gridstack 스크립트에 의존해야 한다는 것입니다.
감사합니다!
UPD: d-widget 정의:
이는 기본적으로 위젯이라는 별도의 파일에 정의되어 있는 단일 구성 요소입니다.표시하다
<template>
<div class="grid-stack-item" data-gs-width="4">
<div class="grid-stack-item-content">
<p>Wiiidget! (added)</p>
</div>
</div>
</template>
<script>
export default {
data () {
return {
}
}
}
</script>
마운트를 사용하면 전달해야 할 것을 얻을 수 있습니다.grid.addWidget
.
우선 컴포넌트를 조립할 수 있는 것으로 바꾸고 싶습니다.
const MyWidget = Vue.extend(DWidget);
그러면 그 컨스트럭터를 탑재할 수 있습니다.
const mounted = new MyWidget().$mount();
나는 아무 것도 주지 않는다.$mount()
컴포넌트는 DOM에 추가되지 않습니다.생성된 요소에 액세스할 수 있습니다.mounted.$el
이 정보를 전달해 주실 수 있을 것 같습니다.addWidget
.
grid.addWidget(mounted.$el, 0,0,1,1,true);
그래서 @Bert의 제안대로 마운트를 사용해야 했습니다.그리고 그의 방법은 완벽하게 작동한다.다음으로 실제로 재사용 가능한 컴포넌트로 기능하는 addWid() 메서드를 나타냅니다.
addWid () {
const MyWidget = Vue.extend(DWidget)
const mounted = new MyWidget().$mount()
var grid = $('#grid-stack').data('gridstack')
grid.addWidget(mounted.$el, 0, 0, 1, 1, true)
}
그것이 누군가에게 도움이 되기를 바랍니다!
언급URL : https://stackoverflow.com/questions/43035128/prerender-vue-js-2-0-component-similar-to-this-compile-in-vue-1
'programing' 카테고리의 다른 글
"mvn clean install"과 "mvn install"의 차이점은 무엇입니까? (0) | 2022.07.17 |
---|---|
Vuex 모듈 초기화 모범 사례 (0) | 2022.07.17 |
C 콤마 연산자 사용 (0) | 2022.07.17 |
검색 중인 항목은 이전 결과에 따라 다릅니다. (0) | 2022.07.17 |
설정된 최하위 비트 위치 (0) | 2022.07.17 |