v-text 数据变化反应到视图

 <div id="app">
        <div v-text='name' class="aaa"></div>
    </div>
    <script>
        let data = {
            name: '某某莫'
        }
       document.querySelector('.aaa').innerText = data.name
        Object.keys(data).forEach((item) => {
            // 处理每一个对象的item转变成响应式
            observe(data, item, data[item])
        })
        // 声明一个函数   get和set的形式
        function observe(data, name, value) {
            Object.defineProperty(data, name, {
                get() {
                    console.log(`你访问了data的${name}属性`)
                    return value
                },
                set(newValue) {
                    if (newValue === value) {
                        return
                    }
                    console.log(`你修改了data的${name}属性`)
                    value = newValue
                    compile()
                }
            })
        }
 
        function compile() {
            let childNodes =  document.querySelector("#app").children  //获取ul元素的所有元素子节点
            childNodes = childNodes[0]
            //获取元素上的属性
            let attrs = childNodes.attributes
             //  Array.from(attrs)将attrs转化为数组
             Array.from(attrs).forEach((attr) => {
             let nodeName = attr.nodeName
             let nodeType = attr.nodeValue
             console.log(nodeName, nodeType)
                      if (nodeName === 'v-text') {
                            childNodes.innerText = data[nodeType]
                        }
                    })
        }
</script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值