vue.js 2.x 版本script里面的dom被过滤,从而获取不到dom字符串的解决方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue.js 2.x 版本script里面的dom被过滤,从而获取不到dom字符串的解决方案相关的知识,希望对你有一定的参考价值。

做项目中 vue.js 在1.x版本切换的到2.x版本的时候遇到了一个问题就是说,1.x版本实例化之后 script 里面的dom 字符串不会被过滤掉,但是2.x版本之后就会被过滤例如:

1.x 版本被实例化之后的script 内容

技术分享

 

2.x 版本被实例化之后的script 内容

技术分享

 

这样我们在获取 id="sh" 内容的时候就无法获取到dom结构,很多时候我们想使用这些dom结构,怎么办呢?

于是乎,经过测试及文档的查看,考虑到了,那么如果还没被完全实例化之后,我们就去获取它,这样我们就能拿到还没被过滤的DOM了吧?

是的 created 方法,于是有了下面的代码完成了。

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<div class="app">
    
    <script type="text/x-template" id="sh">
        <div>
            <h1>1111</h1>
            <p>{{msg}}</p>
        </div>
    </script>

    <button @click="setData">审核</button>

</div>
<script src="jquery.min.js"></script>
<script src="vue.min.2.x.js"></script>
<script>

    
    new Vue({
        el : .app,
        data : {
            msg : null,
            shHtml : null
        } ,
        created : function(){
            this.getScriptDomStr();
        } ,
        methods : {
            getScriptDomStr : function(){
                this.shHtml = document.getElementById(sh).innerHTML
            },
            setData : function(){
                $(.app).append(<div id="tpl"></div>)
                var _self = this;
                new Vue({
                    el : #tpl,
                    data : {
                        msg : 200
                    } ,
                    template : _self.shHtml
                })

            }
        }
    })

</script>
</body>
</html>

 

以上是关于vue.js 2.x 版本script里面的dom被过滤,从而获取不到dom字符串的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

如何在 DOM 事件调用的方法中更改 Vue.js 数据值?

vue.js

vue.js的创建

Vue.js理论!

Vue.js源码解析-从scripts脚本看vue构建

vue.js 侦听DOM结构改变,要不要自己写一个自定义指令