Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js 如何初始化生成的标记?_Vue.js - Fatal编程技术网

Vue.js 如何初始化生成的标记?

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

我想添加更多的元素,这些元素在运行时(即在Vue实例已经初始化之后)对单击处理程序作出反应。通过
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循环填充要显示的数据数组,然后在模板中执行其余操作。这里有一个想法:但也许你的问题比你的例子更复杂。