• avalonjs 中的if else实现的几种方法


        在学习avalonjs的过程中,发现模板中并没有if else这样的写法,不像tempalte ejs这些,所以总结了三种方法来实现,仅供在使用avalonjs的同学参考,主要是通过ms-if 表达式和方法来实现.

        1.开始前的准备

        首先是做一个简单的html作为基础    

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    		<script type="text/javascript" src="http://avalonjs.github.io/static/script/avalon.js"></script>
    		<title>avalon的if else</title>
    	</head>
    	<body>
    		<div ms-controller="test">
    			
    		</div>
    	</body>
    </html>

        一些简单的样式

    .text1{
    	color: #f33;
    }
    
    .text2{
    	color: #33f;
    }
    
    .text3{
    	color: #3f3;
    }

        简单的avalonjs 例子初始化,其中的type就是我们要用来做判断的

    var vm = avalon.define({
    	$id: "test",
    	type:1
    });    


        2.使用ms-if的方式

        最直接的就是avalonjs的绑定ms-if,只是这里却没有ms-else这样的绑定,应该是处于dom的结构考虑,所以才没有这样的绑定器吧.那么实现的方法其实也很简单,两个ms-if就可以实现了,也就是写两个div,在不同的情况下做不同的显示即可,在html中就可以实现了.

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    		<script type="text/javascript" src="http://avalonjs.github.io/static/script/avalon.js"></script>
    		<title>avalon的if else</title>
    	</head>
    	<body>
    		<div ms-controller="test">
    			<div class="text1" ms-if="type==0">if 的内容</div>
    			<div class="text1" ms-if="type!=0">else 的内容</div>
    			
    			
    		</div>
    	</body>
    </html>


        3.使用表达式

        mvvm的框架都会支持表达式的,avalonjs不例外,实现的方式就是在"{{}}"里面写入表达式进行判断,通过三元运算符来进行判断,现在回过头来想,avalonjs做得还是很强大的.既然是在"{{}}"里面写,那么在html就可以实现了.

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    		<script type="text/javascript" src="http://avalonjs.github.io/static/script/avalon.js"></script>
    		<title>avalon的if else</title>
    	</head>
    	<body>
    		<div ms-controller="test">
    			<div class="text1" ms-if="type==0">if 的内容</div>
    			<div class="text1" ms-if="type!=0">else 的内容</div>
    			
    			<div class="text2">
    				{{type==0?'if 的内容':'else 的内容'}}
    			</div>
    		</div>
    	</body>
    </html>


        4.在模型中定义方法

        一般的情况用前面两种方法应该都没有多大问题,如果是遇到一些复杂的判断,就需要这种方法了,就是在模型中自定义一个方法来处理,这个方法应该称为通用的方法吧,里面就有很多发挥的空间.

        自定义一个方法来处理,问题就简单了很多,毕竟在js里面做判断还是很容易的事情的,比如if else 表达式switch ,这些都可以用上,到时候只要return 内容回去就可以了,那么这个需要html和js来共同完成.

        html的代码如下:

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    		<script type="text/javascript" src="http://avalonjs.github.io/static/script/avalon.js"></script>
    		<title>avalon的if else</title>
    	</head>
    	<body>
    		<div ms-controller="test">
    			<div class="text1" ms-if="type==0">if 的内容</div>
    			<div class="text1" ms-if="type!=0">else 的内容</div>
    			
    			<div class="text2">
    				{{type==0?'if 的内容':'else 的内容'}}
    			</div>
    			
    			<div class="text3">
    				{{toHtml(type)}}
    			</div>
    		</div>
    	</body>

        js的代码如下:

    var vm = avalon.define({
    	$id: "test",
    	type:1,
    	toHtml: function(type){
    		if(type===0){
    			return "if 的内容";
    		}else{
    			return "else 的内容";
    		}
    	}
    });


        5.结束语

        像avalonjs这样的框架,有时候看起来限制了用法,其实换一个角度了看却是变得更加灵活了,上面介绍的方法希望能给学习avalonjs的同学一些启发和参考.

        上面的例子,写在了runjs里面http://runjs.cn/detail/uibw2aio.本文同步发表在我的个人博客,http://www.subying.com/archives/144.html .


        


  • 相关阅读:
    Java通过JNI调用C/C++
    Using HTML5 audio and video
    vmstat输出项解释
    uva 11237
    NN优化方法对照:梯度下降、随机梯度下降和批量梯度下降
    认识与学习bash
    系统崩溃,大圣归来
    连载《一个程序员的生命周期》-25.到工业现场学习业务知识引发的思考
    ZOJ问题(2010浙江大学研究生复试上机题目[找规律] hdoj 3788)
    UIView的几个枚举定义
  • 原文地址:https://www.cnblogs.com/subying/p/4855549.html
Copyright © 2020-2023  润新知