Avalon学习

1.认识Avalon
Avalon是一个简单易用的迷你的MVVM框架,做者是博客园的司徒正美,去哪儿、搜狐等等都用这个框架。
没有任何依赖,兼容性很是好,支持IE6,不到5000行,压缩后不到50KB。
官网地址:http://avalonjs.github.io/,移动版本是avalon.modern.js。
2.做用域绑定(ms-controller, ms-important)
3.忽略扫描绑定(ms-skip)
4.数据填充(ms-text, ms-html)
5.类名切换(ms-class, ms-hover, ms-active)
6.事件绑定(ms-on)
7.显示绑定(ms-visible)
8.双工绑定(ms-duplex)
9.样式绑定(ms-css)
10.数据绑定(ms-data)用法为ms-data-name="value", 用于为元素节点绑定HTML5 data-*属性。
11.属性绑定(ms-attr),1.3.5后,除了ms-src, ms-href,其余都吞入ms-attr-*
12.循环绑定(ms-repeat)
13.模块间通讯及属性监控 $watch,$fire, $unwatch
14.过滤器css

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <style> .red{ background-color: red;} .active { background-color: yellow;
        } .hover{ background-color: green;}
    </style>
    <script src="avalon.js"></script>
    <script> avalon.ready(function() { var vm = avalon.define({ $id: "box", //ms-controller做用域ID
 w: 100, //变量
 h: 100, click: function() { vm.w = parseFloat(vm.w) + 10; vm.h = parseFloat(vm.h) + 10; }, b: 100, $skipArray: ["b"], //不想监听b属性,能够直接将此属性名放到$skipArray数组中
 text: "<b>1111</b>", status: "", callback: function(e) { vm.status = e.type; }, field: "", check: function(e, par) { vm.field = this.value + par; }, isvisible: true, array: "a,b,c,d,e,f,g".split(","), checkboxArrayIds: [1, 3], aaa: "http://www.yxl.com/1", A: "ABCD" }); vm.$watch("w", function(newValue,oldValue) { avalon.log(newValue); avalon.log(oldValue); }); setTimeout(function() { vm.w = 222; }, 5000); avalon.filters.myfilter = function (str, args, args2) {//str为管道符以前计算获得的结果,默认框架会帮你传入,此方法必须返回一个值
                /* 具体逻辑 */ str = str + 1; return str; } avalon.filters.add=function(num2) { return num2+5; } avalon.define({ $id: "ddd", //ms-important做用域若是viewmodel中没有定义变量不会向上一级查找
 w: 100 //变量
 }); avalon.scan(); }); //下面的这种写法也能够
        //avalon.ready(function () {
        // avalon.define("box", function(vm) {
        // vm.w = 100;
        // vm.h = 100;
        // });
        // avalon.scan();
        //});
    </script>
</head>
<body>
    <div ms-controller="box">
        <div style=" background: #a9ea00;" ms-css-width="w" ms-css-height="h" ms-click="click"></div>
        <p>{{ w }} x {{ h }}</p>
        <p ms-skip>{{ w }} x {{ h }}</p>
        <p>W: <input type="text" ms-duplex="w" data-duplex-event="change" /></p>
        <p>H: <input type="text" ms-duplex="h" /></p>
        <p>b: <input type="text" ms-duplex="b" /></p>{{b}} <div ms-important="ddd">
            <p>H: <input type="text" ms-duplex="h" /></p>
        </div>
        <div ms-controller="ddd">
            <p>H: <input type="text" ms-duplex="h" /></p>
        </div>
        <p ms-text="text"></p>
        <p ms-html="text"></p>
        <p ms-class="red" ms-hover="hover" ms-active="active" style="width:100px; height:100px;"></p>
        <p ms-mouseenter="callback" ms-mouseleave="callback">
            <input type="text" ms-on-input="check($event,'我是传过来的参数')" />{{status}}{{field}} </p>
        <p ms-visible="isvisible">显示绑定</p>
        <p>
            <ul ms-each-item="array">
                <li ms-click="$remove" ms-if="$index % 2 == 0">{{ item }} --- {{$index}}</li>
            </ul>
        </p>
        <p>
        <p> ms-duplex-number <input ms-duplex-number="checkboxArrayIds" type="checkbox" value="1" />
            <input ms-duplex-number="checkboxArrayIds" type="checkbox" value="2" />
            <input ms-duplex-number="checkboxArrayIds" type="checkbox" value="3" />
            <input ms-duplex-number="checkboxArrayIds" type="checkbox" value="4" /> {{checkboxArrayIds}} </p>
        <p>
            <input type="text" ms-data-relateid="1">
        </p>
        <p>
            <a ms-href="aaa + '.html'">xxxx</a>
            <a ms-href="{{aaa}}.html">xxxx</a>
        </p>
        
        <p>
            <ul>
                <li ms-repeat-item="array">{{ item }} --- {{$index}}</li>
            </ul>
        </p>
        <p>{{A|lowercase}}</p>
        <p>{{ new Date | date("yyyy年MM月dd日 HH:mm:ss")}}</p>
        <p>{{ 1|add }}</p>
    </div>
</body>
</html>
相关文章
相关标签/搜索