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.过滤器

<!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>

 

你可能感兴趣的:(val)