我在使用Vue 3时遇到了问题,从CDN使用vue。我想使用服务器生成的模板,模板被更改但方法和数据没有绑定。
<script>
// reproduction of the issue in vue3 vite
import { compile, computed, h } from 'vue/dist/vue.esm-bundler'; // vite
// import { compile, computed, h } from 'vue/dist/vue.esm-bundler'; // webpack
export default {
data() {
return {
htmlTemplate: '<span @click="test()">this is a test {{ testVariable }}</span>', // This is a test from what would be loaded from the server
testVariable: 'test variable',
}
},
methods: {
test() {
console.log('test');
}
},
render() {
const textCompRef = computed(() => ({ render: compile(this.htmlTemplate) }));
console.log('textCompRef', textCompRef);
return h(textCompRef.value);
}
}
</script>
当我点击this is a testthenvue@3:1807 Uncaught TypeError:测试不是函数
有人能给我指个路吗?先谢了
我尝试在创建生命周期中使用.$options.template = response来设置模板,该服务器在第三次单击时工作,并且在加载新模板时没有更改。
1条答案
按热度按时间kx7yvsdv1#
我一直在纠结这个问题。在这里找到了答案:
Can I load the component template dynamically
.bind是关键。在您的情况下,它看起来像: