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>
Avalon学习的更多相关文章
- avalon学习笔记
		
背景: 刚刚到一家新的公司,我新接手的项目采用的mvvm框架是avalon,当然我以前没有学过angular,但是用过react,所以对于这类框架应该不算陌生.但毕竟是一个新的框架,所以还是先学起来, ...
 - avalon学习笔记一 列表及条件过滤
		
好长时间都没有更新博客了,不是因为没有学习新的东西,而是到了新的单位每天玩命加班实在是太累了!经过一年的努力吧,终于可以轻松一下了.废话少说,直接干货吧! 由于是学习阶段,就直接拿了公司的二级页面做了 ...
 - avalon学习教程
		
最近在项目中发现了个很不错的前端MVVM框架 avalon,对于基础的使用大概学习了一遍,有些深入的没应用场景还没细看. 收藏好,估计以后要用 http://www.html-js.com/artic ...
 - Avalon总线学习 ---Avalon Interface Specifications
		
Avalon总线学习 ---Avalon Interface Specifications 1.Avalon Interfaces in a System and Nios II Processor ...
 - 迷你MVVM框架 avalonjs 学习教程22、avalon性能大揭密
		
avalon之所以能在页面处理1W个绑定(angular对应的数字是2000),出于两个重要设计--基于事件驱动的双向绑定链及智能CG回收机制. avalon的双向绑定链是通过Object.defin ...
 - 迷你MVVM框架 avalonjs 学习教程19、avalon历史回顾
		
avalon最早发布于2012.09.15,当时还只是mass Framework的一个模块,当时为了解决视图与JS代码的分耦,参考knockout开发出来. 它的依赖收集机制,视图扫描,绑定的命名d ...
 - 迷你MVVM框架 avalonjs 学习教程17、avalon的一些配置项
		
本章节,主要是介绍avalon.config方法,通过它来制定一些更贴心的功能. 一般情况下,我们在使用ms-controller绑定时,需要添加一个ms-controller类名,目的是为了防止网速 ...
 - 迷你MVVM框架 avalonjs 学习教程1、引入avalon
		
avalon是国内最强大的MVVM框架,没有之一,虽然淘宝KISSY团队也搞了两个MVVM框架,但都无疾而终.其他的MVVM框架都没几个.也只有外国人与像我这样闲的架构师才有时间钻研这东西.我很早之前 ...
 - MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js、Vue.js 概念摘录
		
注:文章内容都是摘录性文字,自己阅读的一些笔记,方便日后查看. MVC MVC(Model-View-Controller),M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是 ...
 
随机推荐
- Struts2 验证规则配置文件
			
1. Action级别校验命名格式: ActionClassName-validation.xml 2. Action中某个方法的校验命名格式: ActionClassName-ActionAlias ...
 - 跟着百度学PHP[2]-foreach条件嵌套
			
任务 通过二维数组,保存了学号.姓名和成绩,可以通过两个循环嵌套,遍历出学号和姓名. <?php $student = array( '001' => array("王大牛&qu ...
 - CCF 模拟B 无脑循环+输入输出外挂
			
http://115.28.138.223:81/view.page?opid=2#code 代码一有WA点80分 #include<iostream> #include<cstdi ...
 - MySQL 查看最大连接数, 当期连接数.
			
查看最大连接数 select VARIABLE_VALUE from information_schema.GLOBAL_VARIABLES where VARIABLE_NAME='MAX_CONN ...
 - yuv转bmp
			
#ifdef _INTERFACE_H #error _INTERFACE_H has be exsisted #else #define _INTERFACE_H #include "st ...
 - Random Pick Index
			
Given an array of integers with possible duplicates, randomly output the index of a given target num ...
 - Debian上安装Apache+Django全过程
			
-->start sudo apt-get install apache2 libapache2-mod-wsgi #https://wiki.debian.org/zh_CN/Apache s ...
 - jdbc事务处理和连接池
			
JDBC: * JDBC概念:Java DataBase Connectivity(Java数据库连接) SUN公司提供的一组连接数据库API. * JDBC开发步骤: * 1.注册驱动. * 2.获 ...
 - std::map
			
1.例: map<int,string> m_mapTest; m_mapTest.insert(make_pair(1,"kong")); m_mapTest.ins ...
 - python(pyqt)开发环境搭建
			
eric+pyqt 安装(python开发工具) 更多 0 Python python Eric是一个开源的.跨平台的python&ruby集成开发环境,基于python和pyqt运行.eri ...