zoukankan      html  css  js  c++  java
  • vue模板语法(上)

    插值

    文本

    数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值

    Html

    使用 v-html 指令用于输出 html 代码

    表达式

    Vue提供了完全的JavaScript表达式支持
    {{str.substr(0,6).toUpperCase()}}
    {{ number + 1 }}
    {{ ok ? 'YES' : 'NO' }}
    <li v-bind:id="'list-' + id">我的Id是js动态生成的</li>

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
    		<title>插值</title>
    	</head>
    	<body>
    		<div id="app">
    			<ul>
    				<li>
    					<h3>文本</h3>
    					{{msg}}
    				</li>
    				<li>
    					<h3>v-html</h3>
    					<div v-html="vueHtml"></div>
    				</li>
    				<li>
    					<h3>属性</h3>
    					<!--
    					 v-bind:与v-model的区别
    					 v-model是做数据双向绑定的指令
    					 v-bind只是将对应的值给填写到指定属性中
    					 例如:v-bind:Value简单来说就是将值填写到value
    					 然后value的值发生改变,并不会影响vue实列中变量值				 
    					 -->
    					<input type="text" :value="msg" />
    				</li>
    				<li>
    					<h3>表达式</h3>
    					{{str.substr(0,6).toUpperCase()}}
    					{{ number + 1 }}
    					{{ ok ? 'YES' : 'NO' }}
    				</li>
    				<li :id="'list-' + id">我的Id是js动态生成的</li>
    			</ul>
    
    		</div>
    
    	</body>
    	<script type="text/javascript">
    		new Vue({
    			el: "#app",
    			data() {
    				return {
    					msg: 'hello vue',
    					vueHtml: '<span style="color:red;">vue对html解析</span>',
    					str:'http://www.baidu.com',
    					number:6,
    					ok:true,
    					id:9
    				}
    			}
    		})
    	</script>
    </html>
    

      指令

    v-if|v-else|v-else-if:

    根据其后表达式的bool值进行判断是否渲染该元素
    他们只能是兄弟元素
    v-else-if上一个兄弟元素必须是v-if
    v-else上一个兄弟元素必须是v-if或者是v-else-if

     v-show:

    与v-if类似,只是会渲染其身后表达式为false的元素,而且会给这样的元素添加css代码:style="display:none"

    v-for:

    类似JS的遍历,
    遍历数组: v-for="item in items", items是数组,item为数组中的数组元素
    遍历对象: v-for="(value,key,index) in stu", value属性值,key属性名,index下标

    动态参数
    从2.6.0开始,可以用方括号括起来的JavaScript表达式作为一个指令的参数
    <a v-bind:[attrname]="url"> ... </a>

    同样地,你可以使用动态参数为一个动态的事件名绑定处理函数
    <a v-on:[evname]="doSomething"> ... </a>

    注1:动态参数表达式有一些语法约束,evName无效,evname有效,回避大写

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
    		<title>指令</title>
    	</head>
    	<body>
    		<div id="app">
    			<ul>
    				<li>
    					<h3>条件指令( if elseif else)</h3>
    					<input type="text" v-model="score" />
    					<div v-if="score>90">A</div>
    					<div v-else-if="score>80">B</div>
    					<div v-else-if="score>70">C</div>
    					<div v-else-if="score>60">D</div>
    					<div v-else="">E</div>
    				</li>
    				<li>
    					<h3>v-Show</h3>
    					<input type="text" v-model="show" />
    					<div v-show="show">出现了</div>
    				</li>
    				<li>
    					<h3>v-for</h3>
    					<div v-for="item,index in arr">
    						<!-- item具体元素,index下标 -->
    						{{item}},{{index}}
    					</div>
    					<div v-for="item,index in objArr">
    						{{item}},{{index}}
    					</div>
    				</li>
    				<li>
    					<h3>动态参数</h3>
    					<input type="text" v-model="evname" />
    					<!-- dblclick -->
    					<button v-on:[evname]="xxx">点我</button>
    				</li>
    			</ul>
    		</div>
    
    	</body>
    	<script type="text/javascript">
    		new Vue({
    			el: "#app",
    			data() {
    				return {
    					msg: 'hello vue',
    					score: 86,
    					show: null,
    					/* 数组 */
    					arr: [1, 5, 7, 9, 3],
    					/* 数组对象*/
    					objArr: [{
    						id: '001',
    						name: '麻子'
    					}, {
    						id: '002',
    						name: '张三'
    					}, {
    						id: '001',
    						name: '李四'
    					}],
    					evname:'click'
    				};
    			},
    			methods:{
    				xxx(){
    					console.info('xxx方法执行');
    				}
    			}
    		});
    	</script>
    </html>
    

      

    过滤器
    全局过滤器
    Vue.filter('filterName', function (value) {
       // value 表示要过滤的内容
       });
    局部过滤器
    new Vue({
    filters:{'filterName':function(value){}}
       });

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
    		<title>过滤器</title>
    	</head>
    	<body>
    		<div id="app">
    			<ul>
    				<li>
    					<h3>局部过滤器</h3>
    					{{msg}}
    					{{msg | a }}
    				</li>
    				<li>
    					<h3>局部过滤器可串联</h3>
    					{{msg}}
    					{{msg | a | b}}
    				</li>
    				<li>
    					<h3>全局过滤器</h3>
    					{{msg | c}}
    				</li>
    			</ul>
    		</div>
    	</body>
    	<script type="text/javascript">
    		Vue.filter('c', function(v) {
    			return v.substring(7);
    		})
    		new Vue({
    			el: "#app",
    			data() {
    				return {
    					msg: 'http://www.baidu.com'
    				};
    			},
    			filters: {
    				a(v) {
    					return v.substring(4);
    				},
    				b(v) {
    					return v.substring(3);
    				}
    			}
    		})
    	</script>
    </html>
    

    计算属性及监听属性

    计算属性
    计算属性可用于快速计算视图(View)中显示的属性。这些计算将被缓存,并且只在需要时更新
    computed:{}

    监听属性
    监听属性 watch,我们可以通过 watch 来响应数据的变化

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
    		<title>计算属性及监听属性</title>
    	</head>
    	<body>
    		<div id="app">
    			<ul>
    				<li>
    					<h3>计算属性</h3>
    					数量:<input type="text" v-model="num" />
    					价格:<input type="text" v-model="price" />
    					计算总价:{{total}}
    				</li>
    				<li>
    					<h3>监听属性</h3>
    					km:<input type="text" v-model="km" />
    					m:<input type="text" v-model="m" />
    				</li>
    			</ul>
    		</div>
    	</body>
    	<script type="text/javascript">
    		new Vue({
    			el: "#app",
    			data() {
    				return {
    				      num:1,
    					  price:19,
    					  km:1,
    					  m:1000
    				};
    			},
    			computed:{
    				/* 在计算属性定义的时候,是可以获取到vue实列中定义任何变量 */
    				total(){
    					return parseInt(this.num)*parseInt(this.price);
    				}
    				
    			},
    			watch:{
    				km(v){
    					this.m=1000*v;
    				},
    				m(v){
    					this.km=v/1000;
    				}
    			}
    		});
    	</script>
    </html>
    

      

  • 相关阅读:
    2333
    STL string
    后缀自动机的应用
    省选一轮
    等价类计数问题(Polya定理和burnside引理)
    Prufer序列与树的计数(坑)
    分治算法
    生成函数
    莫队算法
    Xamarin 技术解析
  • 原文地址:https://www.cnblogs.com/chenjiahao9527/p/11282937.html
Copyright © 2011-2022 走看看