zoukankan      html  css  js  c++  java
  • 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 .


        


  • 相关阅读:
    WindowsPhone7 经典3D游戏《刺客信条》评测
    WPF案例 — 展厅触摸屏展示系统
    Silverlight三维柱状图3D饼图的Silverlight图表组件案例
    应聘Silverlight讲师(全职或兼职均可)
    WPF案例之生产线控制器管理系统
    Silverlight 5 Beta 版发布日期确定
    《银光志Silverlight 3.0开发详解与最佳实践》发行第三版总销量过万册
    微软Silverlight5发布会提供线上注册
    Silverlight WebOS案例2.0版本(基于Silverlight4开发的Web操作系统)
    长年承接WP7游戏和WP7软件外包
  • 原文地址:https://www.cnblogs.com/subying/p/4855549.html
Copyright © 2011-2022 走看看