zoukankan      html  css  js  c++  java
  • 数据绑定

    说两个概念,回流和重绘

    回流:当html结构发生改变,如增删元素 位置发生改变 等,这样浏览器需要重新的计算一遍最新的DOM结构,从而重新的对当前的页面进行渲染

    重绘:某一个元素的部分样式发生变化 浏览器只需要重新渲染当前元素

    列表的数据一般都是从接口来的

    假设是ul>li的布局,有三种绑定数据的方法

    1.利用动态创建元素节点,把它追加到页面中的方式实现绑定

    缺点:每次插入li,浏览器需要回流一次

    <body>
      <ul id="list">
      </ul>
      <script>
      var list = document.getElementById("list");
      var data = [1, 2, 3];
      for (var i = 0; i < data.length; i++) {
        var cur = data[i];
        var oli = document.createElement("li");
        oli.innerHTML = cur;
        list.appendChild(oli);
      }
      list.innerHTML = str;
      </script>
    </body>

    2.字符串拼接,(目前的模板渲染基本都是这个原理,jade,....)

    将数据和元素绑定,变成一个字符串,然后一次性的插入文档中

    <body>
      <ul id="list">
      </ul>
      <script>
      var list = document.getElementById("list");
      var data = [1, 2, 3];
      var str = "";
      for (var i = 0; i < data.length; i++) {
        var cur = data[i];
        str += "<li>" + cur + "</li>";
      }
      list.innerHTML = str;
      </script>
    </body>

    3.文档碎片,相当于创建一个临时容器,不是每次直接插入到文档中

    <body>
      <ul id="list">
      </ul>
      <script>
      var list = document.getElementById("list");
      var data = [1, 2, 3];
      var frg = document.createDocumentFragment();
      for (var i = 0; i < data.length; i++) {
          var cur = data[i];
          var oli = document.createElement("li");
          oli.innerHTML = cur;
          frg.appendChild(oli);
      }
      list.appendChild(frg);
      frg = null;
      </script>
    </body>

    特别注意:

      1.如果在元素未插入前绑定事件,那么插入后,事件失效,所以必须在插入元素之后绑定事件(针对事件冒泡,事件捕获另算)

      2.常用方法2和方法3

  • 相关阅读:
    2013Esri全球用户大会之ArcGIS for Desktop
    简单的session共享的封装
    支付系统开发中可能遇到的问题
    Java定位CPU使用高问题--转载
    ReflectionToStringBuilder
    solrcloud使用中遇到的问题及解决方式
    使用ELK(Elasticsearch + Logstash + Kibana) 搭建日志集中分析平台实践--转载
    php和java的memcached使用的兼容性问题解决过程
    multi-CPU, multi-core and hyper-thread--转
    Java Garbage Collection Basics--转载
  • 原文地址:https://www.cnblogs.com/2han/p/6364333.html
Copyright © 2011-2022 走看看