2018年11月07日 关于Vue的控制流指令 and 计算属性 and 全局及局部组件 and 配置组件

1.控制流指令

v-if、v-else-if、v-else的用法

Index.html文件中的写法:

<div id=”app”>
    <div v-if=”role == ‘admin’|| role= ‘super-admin’”>//在此处要注意这个or判断两边,都需要role='变量'
    你好管理员
    </div>
    <div v-if=”role == ‘admin’”>
    HR你好
    </div>
    <div v-if=”role == ‘admin’”>
    对不起你无法访问
    </div>
</div>

在mian.js中

var app = new Vue({
 el: ‘#app’,
data:{
role: ‘adim’,
}
});

2、计算属性

<div id="app">
	<table>
		<tr>
			<td>数学<td>
			<td><input v-model~~.number~~  = "math" /><td> //这里的v-model的number方法是为了将input中输入的数字字符串转换为数值类型,否则总分的计算会变成字符串的叠加
		</tr>
		<tr>
			<td>语文<td>
			<td><input v-model~~.number~~  = "cn" /><td>
		</tr>
		<tr>
			<td>英语<td>
			<td><input v-model~~.number~~  = "eg" /><td>
		</tr>
		<tr>
			<td>总分<td>
			<td><input v-model = "sum" /><td>
		</tr>
		<tr>
			<td>平均分<td>
			<td><input v-model = "avg" /><td>
		</tr>
	</table>
</div>

在main.js中的

var app = new Vue({
	el:'#app',
	data:{
		math:null,
		cn:null,
		eg:null,
	}
	computed:{
		sum:function(){
			return parseFloat(this.math) + parseFloat(this.cn) + parseFloat(this.eg);//这里的parseFloat与上面的v-model的number方法一样,但是使用number更多一些。
		}
		avg:function(){
			return Math.round(this.sum/3);
		}
	}
});

3、全局及局部组件

我对于组件的理解就是自己创造一个标签,这个标签里包含的功能都在js中完成,在html中可以重复使用。
这仅仅是我的个人观点,或许理解的不够好,因为我也仅仅是初学者。
以下我想定义一个自己的标签,叫做

//首先在HTML文件中是这样写的:
<div id="app">
	<nqy></nqy>
</div>

这个标签的内容我们再Vue.js中完成

Vue.component('nqy',{
	template:'<button @click="on_click">点击我</button>',  //这里的语句结束之后我总是忘记加上“,”,还有给button加上时间的时候,我写成过@:click="on_click”这里我是把bind的简写方式与on的简写方式搞混了。所以要注意
	methods:{
		on_click:function(){
			alert('你好');
		}
	}
});//这里只是配置好了这个组件,但是却还没有渲染到页面上,因为我们没有给它指定地点。

var app = new Vue({
	el:'#app';
});//指定好这个作用域之后,要回头检查<nqy>这个标签有没有放在id=app的div标签中,否则一样还是不会渲染出来。

还可以将我们定义好的组件直接放入作用域中。

//Vue.component('nqy',{

//});

var app = new Vue({
	el:'#app',
	components:{
		nqy:{
					template:'<button @click="on_click">点击我</button>',
					methods:{
					on_click:function(){
						alert('你好');
					}
				}
			}
		}
});

另外我们还可以将组件当成一个对象

var nqy_components = {
	template:'<button @click="on_click">点击我</button>',
	methods:{
		on_click:function(){
			alert(‘你好’);
		}
	}
};
var app = new Vue({
		el:'#app',
		components:{
			nqy:nqy_components,
		}
});

4、配置组件

Vue.component('like',{
    template:'<button @click="on_click">赞 {{like_count}}</button>',
    data:function () {  //这里的data后面是个函数,不是对象。
        return {
            like_count: 10,
            liked:false,
        }
    },
    methods:{
        on_click:function () {
            if (!this.liked)
                 this.like_count ++;
            else
                 this.like_count --;
            this.liked = !this.liked;
        }
    }
});

var app = new Vue({
    el:'#app',
});

猜你喜欢

转载自blog.csdn.net/qq527648162/article/details/83825703