• avalon2对比avalon1 新增的功能汇总


    avalon2.0 与1.4,1.5相比, 2.0是移除了ms-repeat, ms-each, ms-with, ms-include, ms-include-src,ms-data, ms-scan, ms-if-loop指令
    avalon2.0 最主要的改变是 -- 引导符,使用@##来告诉框架这些变量是来自vm的
    avalon2.1.15后还可以使用:xxxx短指令,ms-if 可以写成 :if  ;eg
     
    <body :controller="test">
        <input :duplex="@name">
        <p>Hello,{{@name}}!</p>
        <ul>
          <li :for="($index,el) in @array">{{$index}}--{{el}}</li>
        </ul>
        <a :if="a==1"></a>
    </body>
     
    ms-for:绑定集齐了ms-repeat, ms-each, ms-with的所有功能, 并且更好用, 性能提升七八倍
    利用了js 中 forin的用法,
    //数组 
    aaa:[1,2,3,4]
    <li ms-for="($index, el) in @aaa">{{$index}}-{{el}}</li>
    // 或者 ms-for="el in @aaa"   {{el}}
    //对象 
    bbb:{
         a:1,
         b:2
    },
    ccc:function(){
         console.log('执行完毕')
         //do something
    }
    ms-for="($key, $val) in @bbb" 
     
    <li data-for-rendered="@ccc" ms-for="($key, $val) in @bbb">{{$key}}-{{$val}}</li>
     
    ms-for还可以配套data-for-rendered回调,当列表渲染好时执行此方法(callback[回调]);
     
    ms-rules :  用于定义验证规则,此指令只能用于添加ms-duplex指令的表单元素上; avalon内置验证规则有
    规则描述
    required(true) 必须输入的字段
    norequired(true) 不是必填的字段
    email(true) 必须输入正确格式的电子邮件
    url(true) 必须输入正确格式的网址
    date(true或正则) 必须输入正确格式的日期。默认是要求YYYY-MM-dd这样的格式
    number(true) 必须输入合法的数字(负数,小数)
    digits(true) 必须输入整数
    pattern(正则或true) 让输入数据匹配给定的正则,如果没有指定,那么会到元素上找pattern属性转换成正则再匹配
    equalto(ID名) 输入值必须和 #id 元素的value 相同
    maxlength:5 输入长度最多是 5 的字符串(汉字算一个字符)
    minlength:10 输入长度最小是 10 的字符串(汉字算一个字符)
    chs(true) 要求输入全部是中文
    max:5 输入值不能大于 5
    min:10 输入值不能小于 10
    eg:
     
     
     1 <div ms-controller="validate1">
     2   <form ms-validate="@validate">
     3       <p><input ms-duplex="@aaa" placeholder="username"
     4                 ms-rules='{required:true,chs:true}' >{{@aaa}}</p>
     5       <p><input type="password" id="pw" placeholder="password"
     6                 ms-rules='{required:true}'
     7                 ms-duplex="@bbb" /></p>
     8       <p><input type="password"
     9             ms-rules="{required:true,equalto:'pw'}" placeholder="再填一次"
    10             ms-duplex="@ccc | change" /></p>
    11       <p><input type="submit" value="submit"/></p>
    12   </form>
    13 </div>
    var vm = avalon.define({
            $id: "validate1",
            aaa: "",
            bbb: '',
            ccc: '',
            validate: {
                onError: function (reasons) {
                    reasons.forEach(function (reason) {
                        console.log(reason.getMessage())
                    })
                },
                onValidateAll: function (reasons) {
                    if (reasons.length) {
                        console.log('有表单没有通过')
                    } else {
                        console.log('全部通过')
                    }
                }
            }
        })

      

     
    ms-rules需要和ms-validate一起用,ms-validate 用于定义各种回调与全局的配置项,所以如果要使用ms-rules, 必须同时使用三个指令。
    使用ms-rules验证肯定需要提示信息, data-message或data-required-message 可以帮你搞定你需要的提示信息;eg
     
    <input id="password"
                              name="password"
                              type="password"
                              ms-duplex="@password"
                              ms-rules="{required:true,minlength:5}"
                              data-required-message="请输入密码"
                              data-minlength-message="密码长度不能小于 5 个字母"
                              >
    <input id="confirm_password"
                              name="confirm_password"
                              type="password"
                              ms-duplex="@confirm_password"
                              ms-rules="{required:true,equalto:'password'}"
                              data-equalto-message="两次密码输入不一致"
                              >
     
     
     
    ms-for循环过滤器
     
    1、limitBy,对数组与对象都有效, 限制输出到页面的个数,用法如下
    ms-for='el in @array | limitBy(@num[,@beginNum])'  //@num 最大个数,必须是数字或字符, 当个数超出数组长或键值对总数时, 等于后面; @beginNum开始循环的个数, 可选,默认0
    2、orderBy,对数组与对象都有效, 用于排序,用法如下
    ms-for="el in @array | orderBy(@order, @dir)"   //@order 要排序的属性名    @dir-1或1, 顺序或倒序,可选,默认1
    3、filterBy, 对数组与对象都有效, 用于获取它们的某一子集, 有至少一个参数,用法如下
    ms-for='el in @array | filterBy(@search)'     //如果为函数时, 通过返回true决定成为子集的一部分; 如果是字符串或数字, 将转换成正则, 如果数组元素或对象键值匹配它,则成为子集的一部分,但如果是空字符串则返回原对象 ;其他情况也返回原对象。 其他参数, 只有当search为函数时有效, 这时其参数依次是组元素或对象键值, 索引值, 多余的参数 此过滤多用于自动完成的模糊匹配!
    4、selectBy, 只对对象有效, 用于抽取目标对象的几个值,构成新数组返回,用法如下
    ms-for="td in tr | selectBy(['a','b','c'][,@defaults])"   //@array要抽取的属性名,type为Array    @defaults如果目标对象不存在这个属性,那么从这个默认对象中得到默认值,否则为空字符串, 可选
     
     
    事件过滤器
     
    过滤器
    过滤器描述
    esc 
    当用户按下esc键时,执行你的回调
    tab
    当用户按下tab键时,执行你的回调
    enter
    当用户按下enter键时,执行你的回调
    space
    当用户按下space键时,执行你的回调
    del 
    当用户按下del键时,执行你的回调
    up
    当用户按下up键时,执行你的回调
    down 
    当用户按下down键时,执行你的回调
    left 
    当用户按下left键时,执行你的回调
    right
    当用户按下right键时,执行你的回调
    prevent 
    阻止默为行为,多用于form的submit事件防止页面跳转,相当于调用了event.preventDefault
    stop
    阻止事件冒泡,相当于调用了event.stopPropagation
     
     
    用法如下eg:
     
    <a href='./api.html' ms-click='@fn | prevent'>阻止跳转</a>
    

      

     
  • 相关阅读:
    对之前IoT项目的完善
    利用 esp8266 搭建简单物联网项目
    IOT(esp8266)
    ---分割线---
    百度云下载工具--雷鸟下载
    Win10安装Ubuntu子系统
    安装Ubuntu虚拟机
    搭建微信公众号后台(二)
    手把手教你基于CentOS8搭建微信订阅号后台服务(一)
    如何在PHP5中通过PDO连接SQLite3数据库
  • 原文地址:https://www.cnblogs.com/xhtml5/p/6742576.html
Copyright © 2020-2023  润新知