1. 程式人生 > >2018年11月07日 關於Vue的控制流指令 and 計算屬性 and 全域性及區域性元件 and 配置元件

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',
});