Vue.js 如何初始化生成的标记?
我想添加更多的元素,这些元素在运行时(即在Vue实例已经初始化之后)对单击处理程序作出反应。通过Vue.js 如何初始化生成的标记?,vue.js,Vue.js,我想添加更多的元素,这些元素在运行时(即在Vue实例已经初始化之后)对单击处理程序作出反应。通过v-html添加到DOM最终会起作用,但是新的v-on属性仍然没有处理,因此这些按钮无法工作 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title /> <script src="http
v-html
添加到DOM最终会起作用,但是新的v-on
属性仍然没有处理,因此这些按钮无法工作
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title />
<script src="https://code.jquery.com/jquery-3.3.1.slim.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script><![CDATA[
$(async () => {
new Vue({
data: { x: null },
el: '#v',
methods: {
even_number: function() {
console.log('yep, it worked');
},
start: function() {
let x = '';
let i = 0;
while (i < 20) {
let num = Math.floor(Math.random() * 100);
if (num % 2) {
x += num + ' ';
} else {
x += `<button type="button" v-on="{click: even_number}">${ num }</button>` + ' ';
}
i++;
}
this.x = x;
}
}
});
});
]]></script>
</head>
<body>
<dialog open="open" id="v">
<button type="button" v-on="{click: start}">get this started</button>
<pre><code v-html="x" /></pre>
</dialog>
</body>
</html>
{
新Vue({
数据:{x:null},
el:“#v”,
方法:{
偶数:函数(){
log(“是的,它工作了”);
},
开始:函数(){
设x='';
设i=0;
而(i<20){
设num=Math.floor(Math.random()*100);
如果(数量%2){
x+=num+'';
}否则{
x+=`${num}`+'';
}
i++;
}
这个.x=x;
}
}
});
});
]]>
开始吧
使用v-html
将您限制为原始html。Vue指令将不会按您希望的方式处理。从:
请注意,您不能使用v-html编写模板部分,因为Vue不是基于字符串的模板引擎。相反,组件是首选的UI重用和组合的基本单元
也许您可以将
start
的一些逻辑放入模板中,并构建一个有条件呈现的按钮。有关示例,请参见。使用v-html
将您限制为原始html。Vue指令将不会按您希望的方式处理。从:
请注意,您不能使用v-html编写模板部分,因为Vue不是基于字符串的模板引擎。相反,组件是首选的UI重用和组合的基本单元
也许您可以将
start
的一些逻辑放入模板中,并构建一个有条件呈现的按钮。请参阅以获取示例。最简单的方法是使用while循环填充要显示的数据数组,然后在模板中执行其余操作。这里有一个想法:但可能您的问题比您的示例更复杂。最简单的方法是使用while循环填充要显示的数据数组,然后在模板中执行其余操作。这里有一个想法:但也许你的问题比你的例子更复杂。