vuejs 数据绑定原理

作者: zlx_2017 | 来源:发表于2018-09-20 10:59 被阅读0次

Vuejs 使用get和set来实现数据绑定,心血来潮仿了一下,很粗糙,原理大概相同。

use

var vm = new V({
        el: '#container',
        template: '<div>{{name}}: {{age}}</div>',
        data: {
            name: 'zlx',
            age: '16'
        }
    });

change vm

 vm.name = 'hsq';
 vm.age = '14';
then the template will change immediately;

V.js is simple

+(function(w) {
  var V = function(options) {
    let { data, template, el } = options || {};
    const context = this;
    this.node = document.querySelector(el);
    this.template = template;
    // 为每个属性添加get set方法
    Object.keys(data).forEach(function(key) {
      context.define(context, key, data[key]);
    });
    // 初始化时处理模版
    this.renderTemplate(this.node, template);
  };
  var prop = {
    define: function(obj, key, val) {
      Object.defineProperty(obj, key, {
        get() {
          return val;
        },
        set(new_val) {
          // 通知更新
          val = new_val;
          // 更新模版
          this.renderTemplate(this.node, this.template);
        }
      });
    },
    renderTemplate: function(node, template) {
      // 处理模版
      template = template.replace(/{{name}}/, this.name);
      template = template.replace("{{age}}", this.age);
      // 渲染模版
      node.innerHTML = template;
    }
  };
  V.prototype = prop;
  w.V = V;
})(window);

相关文章

  • vuejs 数据绑定原理

    Vuejs 使用get和set来实现数据绑定,心血来潮仿了一下,很粗糙,原理大概相同。 use change vm...

  • vuejs 数据绑定

    数据绑定 1.vue结构 (html所有的代码需有一个根包裹起来 ) 2.数据绑定 3.复杂数组 参考资料 数据...

  • 解读:Object.defineProperty

    Object.defineProperty vuejs的双向数据绑定就是通过他实现的(划重点!~) vuejs中d...

  • VueJS 语法

    vuejs 的使用 vuejs 的一些指令 不闪烁的数据绑定 如果数据中有 html 标签,则会被解析 显示标签 ...

  • vuejs—数据双向绑定

    上一篇文章,介绍了如何通过vue.js实现页面输出hello vue.js,这篇文章将介绍如何通过其实现数据双向绑...

  • Vuejs 样式绑定

    本文主要归纳,在 Vuejs 中。如何实现数据与样式进行绑定。 class 对象绑定 在 div 标签上绑定 cl...

  • vuejs如何实现数据双向绑定 与 Object.defineP

    vuejs如何实现数据双向绑定 实现数据绑定的做法有大致如下几种: 发布者-订阅者模式(backbone.js)脏...

  • vuejs数据绑定失败原因

    遇到的问题: 这种方式的types虽然设置进去,但是怎么也无法在页面显示, 改成如下方式或者div_newsAdd...

  • 【转】JavaScript的观察者模式(Vue双向绑定原理)

    关于Vue实现数据双向绑定的原理,请点击:Vue实现数据双向绑定的原理原文链接:JavaScript设计模式之观察...

  • vue 双向数据绑定

    Vue实现数据双向绑定的原理:Object.defineProperty()vue实现数据双向绑定主要是:采用数据...

网友评论

    本文标题:vuejs 数据绑定原理

    本文链接:https://www.haomeiwen.com/subject/pdmgnftx.html