zoukankan      html  css  js  c++  java
  • 迷你MVVM框架 avalonjs 学习教程7、数据缓存

    jQuery的许多功能都可以通过avalon的绑定属性来处理,如click方法对应ms-click,css方法对应ms-css,toggle方法对应ms-visible,它的数据缓存功能avalon也搬过来了。但不同于jQuery的是,avalon是直接将数据保存到元素节点的HTML5的data-☆属性上。在从data-☆属性还原数据时,它会简单的数据转换,再返回给你。

    在ms-data绑定中,考虑到如果将对象转换为字符串再还原会丢失函数什么的,因此它们会直接保存到元素之上。

    <!DOCTYPE html>
    <html>
        <head>
            <title>TODO supply a title</title>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width">
            <script src="../avalon.js"></script>
            <script>
                avalon.define({
                    $id: "test",
                    $skipArray: ["array", "object"],
                    number: 111,
                    number2: NaN,
                    bool: false,
                    bool2: true,
                    nn: null,
                    vv: void 0,
                    array: [1, 2, 3],
                    date: new Date,
                    object: {
                        name: "这是数据"
                    },
                    show: function() {
                        var elem = avalon(this)
                        console.log(
                                elem.data("number"), elem.data("number2"),
                                elem.data("bool"), elem.data("bool2"),
                                elem.data("null"), elem.data("void"),
                                elem.data("fn"), this["data-array"],
                                this["data-date"], this["data-object"]
                                )
                    }
                })
            </script>
        </head>
        <body ms-controller="test">
            <div ms-data-number="number"
                 ms-data-number2="number2"
                 ms-data-bool="bool"
                 ms-data-bool2="bool2"
                 ms-data-void="vv"
                 ms-data-null="nn"
                 ms-data-array="array"
                 ms-data-date="date"
                 ms-data-object="object"
                 ms-data-fn="show"
                 ms-click="show"
                 >点我</div>
        </body>
    </html>
    

    enter image description here 这是一个很简单的绑定,没什么好说的,只要记住对象与数组是直接保存在元素节点上就行了。下面是它的源码:

    "data": function(val, elem, data) {
        var key = "data-" + data.param
        if (val && typeof val === "object") {
            elem[key] = val
        } else {
            elem.setAttribute(key, String(val))
        }
    },
    
  • 相关阅读:
    [kuangbin带你飞]专题1-23
    ES code study
    ES特点
    CENTOS7命令
    ES单机版安装
    ES安装手册
    数据库三大范式(1NF,2NF,3NF)及ER图
    win10下Spark的环境搭建
    MySQL安装详细图解整理
    MySQL中format()函数
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/3976738.html
Copyright © 2011-2022 走看看