avalon使用笔记

//保存取消操作(使用双向绑定)
    <div ms-controller=‘test‘>
          <table border="1" style="border-collapse: collapse;">
              <tbody :visible="@showLayer">
                  <tr :for="(k,v) in @data" >
                      <td height="66">
                          <div :visible="v.showCurRow">
                              <input :duplex="v.value" :attr="{‘placeholder‘:v.placeholder,‘type‘:v.type}"/>
                              <div style="text-align: center;padding-top:10px;">
                                  <button :click="v.save" style="margin-right:10px;">保存</button>
                                  <button :click="v.cancel">取消</button>
                              </div>
                          </div>
                      </td>
                      <td>
                          <a href="javsscript:;" :click="v.showCurRow=!v.showCurRow">{{v.showCurRow?‘收缩‘:‘展开‘}}

</a>
                      </td>
                  </tr>
              </tbody>
              <tfoot>
                <tr>
                    <td colspan="2" align="center">
                        <button :click="@[email protected]" :click-1="@console">弹层</button>
                    </td>
                </tr>
              </tfoot>
          </table>
    </div>
</body>
<script>
    var vm=avalon.define({
        $id:"test",
        data:[{‘name‘:‘用户名‘,"value":‘‘,type:‘text‘},{‘name‘:‘密码‘,"value":‘‘,type:‘password‘}],
        showLayer:true,
        init:function(){
            var that=this;
            var newData=vm.data.$model;
            _.each(newData,function(item){
                item[‘saveValue‘]=‘‘;
                item[‘showCurRow‘]=true;
                item[‘placeholder‘]=‘请输入‘+item.name;
                item[‘type‘]=item.type;
                item[‘save‘]=function(){
                    this[‘saveValue‘]=this[‘value‘];
                    this[‘showCurRow‘]=false;
                };
                item[‘cancel‘]=function(){
                    this[‘value‘]=this[‘saveValue‘];
                    this[‘showCurRow‘]=false;
                }
            });
            vm.data=newData
        },
        console:function(){
            console.info(this.data.$model)
        }
    });
    vm.init();
 //数据延迟赋值,联动效果
<body>
    <div :controller="haha">
        <form name="leyi">
            <select  name="halo" :duplex="@data.expSelected">
                <option  :for="(k,v) in @data.selectArr" :attr="{‘value‘:v.VALUE}">{{v.DISPLAY_VALUE}}</option>
            </select>
            <select  name="" :visible="@data.expSelected==1" :attr="{‘disabled‘:@data.expSelected!=1}" >
                <option value="0">矩形</option>
                <option value="1">圆形</option>
            </select>
            <select  name="" :visible="@data.expSelected==2" :attr="{‘disabled‘:@data.expSelected!=2}">
                <option value="0">红色</option>
                <option value="1">绿色</option>
            </select>
        </form>
    </div>
<script>
    //数据延迟赋值,联动效果
    var vm=avalon.define({
        $id:‘haha‘,
        data:{
             expSelected:‘‘,
            "selectArr":[]
        },
        init:function(){
          var that=this;
            var selectArrData=[
                {
                    "DISPLAY_VALUE": "其他",
                    "VALUE": "3"
                },
                {
                    "DISPLAY_VALUE": "颜色",
                    "VALUE": "2"
                },
                {
                    "DISPLAY_VALUE": "图形",
                    "VALUE": "1"
                }
            ];
            //that.data.selectArr=selectArrData;
            setTimeout(function(){//数据延迟加载
                that.data.selectArr=selectArrData;
                that.data.expSelected=2
             },1000)
        }
    });
    vm.init();
</script>
//查看更多的展开收缩
<body>
    <div :controller=‘test‘>
        <span :for="el in data|limitBy(4)">{{el}}</span>
        <span :for="el in data|limitBy(@data.length-4,4)" :visible="@bool">{{el}}</span>
        <span :visible="@data.length>4" :click="@[email protected]">{{@bool?‘收缩‘:‘更多‘}}</span>
    </div>
</body>
<script>
    var vm=avalon.define({
        $id:"test",
        data:[1,2,3,4,5,6,7],
        bool:false
    });
</script>
//tab切换
<style>
    .active{color:red}
</style>
</head>
<body>
    <div :controller=‘test‘>
        <div class="tabHeader">
            <span :for="(k,v) in @tabData" :mouseenter="@tabActiveIndex=k" 

:class="[(@tabActiveIndex==k&&‘active‘)]">{{v.tabTitle}}</span>
        </div>
        <ul  class="tabContent">
            <li :for="(k,v) in @tabData" :visible="[email protected]" >{{v.tabContent}}</li>
        </ul>
    </div>
</body>
<script>
    var vm=avalon.define({
        $id:"test",
        tabData:[
            {
                tabTitle:"tab1标题",
                tabContent:"tab1内容"
            },
            {
                tabTitle:"tab2标题",
                tabContent:"tab2内容"
            },
            {
                tabTitle:"tab3标题",
                tabContent:"tab3内容"
            }
        ],
        tabActiveIndex:0
    });
</script>
时间: 2024-12-29 19:58:00

avalon使用笔记的相关文章

avalon学习笔记ui篇-如何将avalon默认的amd模型禁止,以及用require重写。

一.如何禁止avalon自带的amd模型 1.采用avalon.shim.js这个文件,这个文件删除了原本自带的amd模型,不需要手动删除,修改. 2.打开avalon.js这个文件,搜索avalon.config,将true改为false. 二,下载text.js和css.js 1.因为avalonUI依赖了html文件和css文件. 2.并且将text.js和css.js,在配置中预加载 priority:['text','css'] 三.完整配置项 require.config({ //b

avalon学习笔记ui篇-datepicker篇

一.介绍 首先avalon是我接触的第一个mvvm框架,angularjs也能实现基本同样的功能,但是老外的产物都是比较先进的,他们早已放弃在IE下摸爬滚打,作为大天朝的我们,还是必须要矜矜业业的伺候着IE6,这就是我为什么选择avalon,没用angularjs的原因.官方文档都是老写法,这让我忍不住深深的吐槽正美,好吧,维护一个框架是艰难的,正美加油吧. 二.日历插件篇datepicker 官方文档的参数: <!DOCTYPE HTML> <html> <head>

avalon学习笔记(五)

五,搭建一个工程环境 到此,基础的理论都搞得差不多了,是时候做个实际的例子 换个教程,根据<avalon学习教程>系列--<1.引入avalon>建立一个新项目. 我用的vs2013community版 首先open->web site,指向一个空目录 新建两个folder,一个modules,一个reference. Modules里存放网站的一个一个模块,reference里面放上我们要用到的第三方库,比如avalon,还有常用的requirejs,jquery等等 按照

avalon视频学习笔记(六)

一.数据缓存     1.绑定属性ms-data-* avalon的数据缓存功能与jquery的data()类似,但不同于jquery的是:avalon是直接将数据保存在元素节点上的data-*属性上. 在从data-*属性还原数据时,它会作简单的数据转换,再返回. 在ms-data绑定属性中,对象与数组是直接保存在元素节点上. <head> <meta charset="UTF-8"> <meta name="Generator" c

avalon视频学习笔记(七)

一.属性操作     DOM操作之属性操作: 1.类名操作<div class="active">    ms-class (1)ms-class a.ms-class="active"    默认写法,为元素添加active样式 b.ms-class="active:isOk"    isOK值为true,添加active,为false,删除active c.ms-class="width{{w}}:isOK" 

avalon视频学习笔记(五)

一.插入移除处理     1.绑定属性ms-if a.当ms-if的值为真(true)时,就将元素输出到页面里面. <div ms-controller="text"> <div ms-if="true"> 根据条件显示内容 </div> </div> <div avalonctrl="test"> <div> 根据条件显示内容 </div> </div&g

avalon视频学习笔记(四)

二.显示隐藏处理 含义:效果类似于jquery的toggle,如果它后面跟着的表达式为真值时则显示它所在的元素,为假值时则隐藏. <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus?"> <meta name="Author" content=""> <meta n

avalon视频学习笔记(一)

一.禁用加载器     方法一:在js文件中书写 avalon.config({ loader: false }) 方法二:在avalon源文件中添加 avalon.config({ loader: false }) 方法三:在源文件中删除amd加载器 二.作用域绑定 含义:作用域范围圈定,在一个页面中需要形成多个模块,每个模块需要实现不同功能. 1.ms-controller 可以互相嵌套的作用域 含义:在页面上表现为一个特殊属性,其属性值为ViewModel的$id,表现将在此元素或者其子孙

avalon视频学习笔记(三)

一.双向同步,双向绑定ms-duplex     含义:ms-duplex实现了双向数据绑定.双向绑定通俗说,除了负责将ViewModel中的应的值放到表单元素的value中,还对表单元素偷偷绑定一些事情,用于监听用户的输入从而自动刷新ViewModel. 使用场景一: 当元素为text.password.textaera时,要求prop为一个字符串,当我们改动它的内容时,avalon就会将此元素的value值赋给prop. <head> <meta charset="UTF-