最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

v-model雙向綁定,{{}}報(bào)錯(cuò),HBulider和VScode使用vue指令,v-bind:class【詩書畫唱】

2021-05-14 21:39 作者:詩書畫唱  | 我要投稿


目錄:


例子1:在Vscode中用v-bind:class來控制是否使用class對(duì)應(yīng)的css樣式(ture就是使用,false就是不使用)


firstVue.vue

index.js


例子2:使用{{}}打印出以下表達(dá)式的值:

data:{

? ? i:3,

? ? j:4,

? ? stu:{

? ? ? ? name:'張三',

? ? ? ? age:18

? ? },

? ? msg:'apple'

}




顯示i+j的和

顯示張三

如果age大于等于18就顯示成人,如果小于18就顯示未成年

顯示msg的長(zhǎng)度

顯示msg中下標(biāo)為3的字符



個(gè)人解析首先題目中的data是對(duì)象,這個(gè)通常是HBuilder中使用的寫法(Vscode中的data是函數(shù),是寫成data()的),所以我在HBuilder中做這道題

{{}}使用的作業(yè).html


例子3:頁面上有一個(gè)多選框按鈕,點(diǎn)擊這個(gè)按鈕就顯示一個(gè)圖片,取消點(diǎn)擊則顯示另外一個(gè)圖片


頁面上有一個(gè)多選框按鈕,點(diǎn)擊這個(gè)按鈕就顯示一個(gè)圖片,取消點(diǎn)擊則顯示另外一個(gè)圖片.html


v-model="isUse"表示是否使用雙向綁定

v-bind:class="{'caoZuo2':isUse}"表示

當(dāng)isUse為true時(shí),class='caoZuo1'會(huì)被class="caoZuo1 caoZuo2"取代,或者說是覆蓋,

會(huì)有class='caoZuo2'的效果。caoZuo:是"操作"的意思。


例子4:data中有一個(gè)user對(duì)象,如果user.name有值,就顯示購(gòu)物車按鈕,如果沒有值就顯示登錄按鈕(在vscode中完成)

ZuJian1.vue

index.js

代碼:

{{}}中的表達(dá)式.html

v-bind指令.html

v-for指令.html


?v-for是用來遍歷的,?v-for="val in stu"這種方式只能遍歷出屬性值,

v-for="(val,key) in stu"可以遍歷出key和屬性值。



v-if指令.html


?v-if,?v-else在

<div v-if="visible">歡迎登錄</div>

<div v-else>不可見</div>等類似的代碼中,有進(jìn)行條件判斷的作用。

v-model指令.html

v-model可以進(jìn)行雙向綁定(我個(gè)人認(rèn)為v-model很好用,以后可能會(huì)常常用。一般我認(rèn)為好用的,以后會(huì)常常用,并且可能也記憶得更牢固一些),也就是被雙向綁定的2個(gè)標(biāo)簽中的內(nèi)容會(huì)一起跟著改變,是可以互相影響對(duì)方的,任意一方的內(nèi)容改變,如果另一方不動(dòng),另一方就會(huì)隨之發(fā)生改變。

v-model.number就是雙向綁定中,使用v-model.number的input中如果先輸非數(shù)字,那么可以繼續(xù)輸入數(shù)字和非數(shù)字,仍然有雙向綁定的效果。但是如果一開始輸入數(shù)字,有雙向綁定的效果,后輸入非數(shù)字,輸入非數(shù)字時(shí)沒有雙向綁定的效果,之后無論輸入非數(shù)字還是數(shù)字都仍然沒有雙向綁定的效果。


第一個(gè)VUE程序.html

個(gè)人寫的代碼解析.html


不要用num++,因?yàn)檫@個(gè)是修改變量的值了,會(huì)導(dǎo)致組件循環(huán)渲染等等,

? ?進(jìn)而報(bào)You may have an infinite update loop in a component render function,

? ?在組件呈現(xiàn)函數(shù)中可能有一個(gè)無限更新循環(huán)。

? ?的錯(cuò)誤。可能是因?yàn)?data類似于state狀態(tài)機(jī),如果變量改變,就會(huì)多次渲染。

? 每次渲染時(shí)會(huì)渲染整個(gè)HTML的代碼等等,后面渲染到 <p>{{num+1}}</p>這個(gè)部分,因?yàn)?/span>

變量改變了,所以會(huì)重頭渲染整個(gè)HTML的代碼等等,又會(huì)渲染到 <p>{{num+1}}</p>這個(gè)部分,不同

的循環(huán),后面為什么會(huì)到num=100左右就停止呢?因?yàn)榈?00左右的時(shí)候就是內(nèi)存已經(jīng)消耗光,溢出了,

所以瀏覽器會(huì)報(bào)錯(cuò) 。

? ?

??

?以下就是修改變量的值了,不要像下面那樣寫。

? <p>{{num=num+1}}</p>

<p>{{num++}}</p>

<p>{{typeof(num++)}}</p>




{{}}:外面的花括號(hào)是說:我這里面寫的是js語句

內(nèi)部的花括號(hào)是說:我里面的不是要顯示的文字,而是變量,我要把變量的值解析放在這



v-html="sshc"中的sshc是js部分的new Vue中的內(nèi)容為HTML代碼的變量的名字。

? <p v-html="sshc"></p>的意思是把sshc的HTML內(nèi)容,內(nèi)嵌和渲染到<p></p>里面。

科普(知識(shí)普及)

Vue/React中出現(xiàn)兩個(gè)花括號(hào)的原因



Vue: scoped 樣式與 CSS Module的區(qū)別,




例子1:在Vscode中用v-bind:class來控制是否使用class對(duì)應(yīng)的css樣式(ture就是使用,false就是不使用)



firstVue.vue

<template>

????<div?v-bind:class="{'bg':?isUser}">{{msg}}</div>

</template>

<script>

export?default?{

????data()?{

????????return?{

????????????msg:?'我的第一個(gè)vue程序',

????????????isUser:?true

????????}

????}

}

</script>

<style?scoped>

.bg?{

????width:?100px;

????height:?100px;

????background-color:?pink;

}

</style>




index.js


import?Vue?from?'vue'

import?Router?from?'vue-router'

import?HelloWorld?from?'@/components/HelloWorld'

//自己加入的必須加載和要使用組件的代碼?START


import?firstVue?from?'@/components/firstVue'


//自己加入的必須加載和要使用組件的代碼?END


Vue.use(Router)


export?default?new?Router({

??routes:?[

???

????//http://localhost:8080/#/firstVue

????{

??????path:?'/firstVue',

??????name:?'firstVue',//路由跳轉(zhuǎn)時(shí)使用

??????component:?firstVue//記得寫加載要使用的這個(gè)組件的代碼

????}

????,

????//自己加的代碼?END

??]

})

//解決重復(fù)點(diǎn)擊路由,界面跳轉(zhuǎn)等時(shí)報(bào)錯(cuò)的代碼?START

const?originalPush?=?Router.prototype.push

Router.prototype.push?=?function?push?(location)?{

??return?originalPush.call(this,?location).catch(err?=>?err)

}


//解決重復(fù)點(diǎn)擊路由,界面跳轉(zhuǎn)等時(shí)報(bào)錯(cuò)的代碼?END

我這里組件首字母沒有大寫也可以運(yùn)行,但最好以后首字母大寫地命名組件





例子2:使用{{}}打印出以下表達(dá)式的值:

data:{

? ? i:3,

? ? j:4,

? ? stu:{

? ? ? ? name:'張三',

? ? ? ? age:18

? ? },

? ? msg:'apple'

}




顯示i+j的和

顯示張三

如果age大于等于18就顯示成人,如果小于18就顯示未成年

顯示msg的長(zhǎng)度

顯示msg中下標(biāo)為3的字符



個(gè)人解析:首先題目中的data是對(duì)象,這個(gè)通常是HBuilder中使用的寫法(Vscode中的data是函數(shù),是寫成data()的),所以我在HBuilder中做這道題


{{}}使用的作業(yè).html


<!DOCTYPE html>

<html>


<head>

<meta charset="UTF-8">

<title></title>

<script type="text/javascript" srcc="js/vue.js"></script>

</head>


<body>

<div id="app">

顯示i+j的和:

<p>{{i+j}}</p>


顯示張三:

<p>{{stu.name}}</p>


如果age大于等于18就顯示成人,如果小于18就顯示未成年:

<p>{{stu.age>=18? '成人' : '未成年'}}</p>


顯示msg的長(zhǎng)度:

<p>{{msg.length}}</p>


顯示msg中下標(biāo)為3的字符:

<p>{{msg[3]}}</p>


</div>

<script>

new Vue({

el: '#app',

data: {


i: 3,


j: 4,


stu: {


name: '張三',


age: 18


},


msg: 'apple'


}


});

</script>

</body>


</html>




例子3:頁面上有一個(gè)多選框按鈕,點(diǎn)擊這個(gè)按鈕就顯示一個(gè)圖片,取消點(diǎn)擊則顯示另外一個(gè)圖片


頁面上有一個(gè)多選框按鈕,點(diǎn)擊這個(gè)按鈕就顯示一個(gè)圖片,取消點(diǎn)擊則顯示另外一個(gè)圖片.html

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<style type="text/css">



.caoZuo1 {

display: none;

}

.caoZuo2 {

display: block;

}

</style>

<script type="text/javascript" srcc="js/vue.js" ></script>

</head>

<body>

<div id="app">

<!--v-model="isUse"表示是否使用雙向綁定

v-bind:class="{'caoZuo2':isUse}"表示

當(dāng)isUse為true時(shí),class='caoZuo1'會(huì)被class="caoZuo1 caoZuo2"取代,或者說是覆蓋,

會(huì)有class='caoZuo2'的效果。caoZuo:是"操作"的意思。

-->

<input type="checkbox" name="item"? v-model="isUse">顯示圖片? ? ? ? ?

? ? ? ? ? <img v-bind:src="path"? class='caoZuo1'? v-bind:class="{'caoZuo2':isUse}"/>

? ? ??

</div>

<script>

new Vue({

el: '#app',

data: {


path: 'img/GOSICK4.jpg',

? ? ? ? ? ? ? ? ? ? ?isUse: false

}

});

</script>

</body>

</html>




例子4:data中有一個(gè)user對(duì)象,如果user.name有值,就顯示購(gòu)物車按鈕,如果沒有值就顯示登錄按鈕(在vscode中完成)


ZuJian1.vue

<template>

??


???<div?>

???????user.name!=null的結(jié)果:

???????{{user.name!=''}}


<div??v-html="buy_car_button"?class='caoZuo1'?

?v-bind:class="{'caoZuo2':?user.name!=null&&user.name!=''?true:false}"></div>?


?

<div??v-html="login_button"???class='caoZuo1'?

?v-bind:class="{'caoZuo2':?user.name!=null&&user.name!=''?false:true}"></div>


???</div>


</template>

<script>

export?default?{

????data()?{

????????return?{

????????????user:?{name:"詩書畫唱"},

???????????buy_car_button:"<input?type='button'?value='購(gòu)物車'>",

???????????login_button:"<input?type='button'?value='登錄按鈕'>"

????????}

????}

}

</script>


/*?個(gè)人理解:


css?樣式天生又是全局性的,所以到最后總是極容易地就發(fā)生樣式?jīng)_突——要么是樣式相互覆蓋。


用<style?scoped></style>可以使得我們的樣式只被應(yīng)用到被作用的組件中的元素上。*/?


<style?type="text/css">

????????????

????????????

????????????.caoZuo1?{

????????????????display:?none;

????????????}

????????????.caoZuo2?{

????????????????display:?block;

????????????}

????????</style>





index.js


import?Vue?from?'vue'

import?Router?from?'vue-router'

import?HelloWorld?from?'@/components/HelloWorld'

//自己加入的必須加載和要使用組件的代碼?START


import?ZuJian1?from?'@/components/ZuJian1'


//自己加入的必須加載和要使用組件的代碼?END


Vue.use(Router)


export?default?new?Router({

??routes:?[

???

????//http://localhost:8080/#/ZuJian1


????{

??????path:?'/ZuJian1',

??????name:?'ZuJian1',//路由跳轉(zhuǎn)時(shí)使用

??????component:?ZuJian1//記得寫加載要使用的這個(gè)組件的代碼

????}

????,

????//自己加的代碼?END

??]

})

//解決重復(fù)點(diǎn)擊路由,界面跳轉(zhuǎn)等時(shí)報(bào)錯(cuò)的代碼?START

const?originalPush?=?Router.prototype.push

Router.prototype.push?=?function?push?(location)?{

??return?originalPush.call(this,?location).catch(err?=>?err)

}


//解決重復(fù)點(diǎn)擊路由,界面跳轉(zhuǎn)等時(shí)報(bào)錯(cuò)的代碼?END

終端中輸入npm run dev,按回車鍵后:


http://localhost:8080/#/ZuJian1



http://localhost:8080/#/ZuJian1



代碼:





{{}}中的表達(dá)式.html

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<script type="text/javascript" srcc="js/vue.js" ></script>

</head>

<body>

<div id="app">

<p>{{message}}</p>

<!-- 會(huì)直接顯示Html文本 -->

<p>{{ctx}}</p>

<!-- 通過v-html指令可以直接解析為html標(biāo)簽 -->

<p v-html="ctx"></p>

<p>{{flag ? 'On' : 'Off'}}</p>

<p>{{5 * num}}</p>

</div>

<script>

new Vue({

el: '#app',

data: {

message: '這是我的第一個(gè)vue程序',

ctx: '<input type="button" value="點(diǎn)擊" />',

flag: true,

num: 5

}

});

</script>

</body>

</html>


v-bind指令.html


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<style type="text/css">

.bg {

width: 100px;

height: 100px;

background-color: pink;

}

</style>

<script type="text/javascript" srcc="js/vue.js" ></script>

</head>

<body>

<div id="app">

<div v-bind:class="{'bg':isUser}"></div>

<a v-bind:href="url">跳轉(zhuǎn)到百度</a>

<img v-bind:src="path" />

<input v-bind:type="t" value="測(cè)試"/>

</div>

<script>

new Vue({

el: '#app',

data: {

isUser:true,

url: 'http://www.baidu.com',

path: 'img/GOSICK4.jpg',

t: 'text'

}

});

</script>

</body>

</html>



v-for指令.html



?v-for是用來遍歷的,?v-for="val in stu"這種方式只能遍歷出屬性值,

v-for="(val,key) in stu"可以遍歷出key和屬性值。




<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<script type="text/javascript" srcc="js/vue.js" ></script>

</head>

<body>

<div id="app">

<ol>

<li v-for="p in pros">

<a href="#">{{p.pn}}</a>價(jià)格:{{p.price}}

</li>

</ol>

<ul>

<!-- 這種方式只能拿到屬性值 -->

<li v-for="val in stu">

{{val}}

</li>

<!-- key和屬性值都要拿到 -->

<li v-for="(val,key) in stu">

{{key}}:{{val}}

</li>

</ul>

</div>

<script>

new Vue({

el: '#app',

data: {

pros: [

? ? {pn: '鳳爪',price: 4.7},

? ? {pn: '巧克力',price: 8.5},

? ? {pn: '果凍',price: 10.5}

],

stu: {

name: 'Tom',

age: 18,

sex: '男'

}

}

});

</script>

</body>

</html>



v-if指令.html


?v-if,?v-else在

<div v-if="visible">歡迎登錄</div>

<div v-else>不可見</div>等類似的代碼中,有進(jìn)行條件判斷的作用。



<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<script type="text/javascript" srcc="js/vue.js" ></script>

</head>

<body>

<div id="app">

<div v-if="visible">歡迎登錄</div>

<div v-else>不可見</div>


<div v-if="score >=90 && score <= 100">優(yōu)秀</div>

<div v-else-if="score < 90 && score >= 80">良好</div>

<div v-else-if="score < 80 && score >= 70">一般</div>

<div v-else-if="score < 70 && score >= 60">及格</div>

<div v-else>不及格</div>

</div>

<script>

const vue = new Vue({

el: '#app',

data: {

visible: false,

score: 100

}

});

</script>

</body>

</html>




v-model指令.html


v-model可以進(jìn)行雙向綁定(我個(gè)人認(rèn)為v-model很好用,以后可能會(huì)常常用。一般我認(rèn)為好用的,以后會(huì)常常用,并且可能也記憶得更牢固一些),也就是被雙向綁定的2個(gè)標(biāo)簽中的內(nèi)容會(huì)一起跟著改變,是可以互相影響對(duì)方的,任意一方的內(nèi)容改變,如果另一方不動(dòng),另一方就會(huì)隨之發(fā)生改變。

v-model.number就是雙向綁定中,使用v-model.number的input中如果先輸非數(shù)字,那么可以繼續(xù)輸入數(shù)字和非數(shù)字,仍然有雙向綁定的效果。但是如果一開始輸入數(shù)字,有雙向綁定的效果,后輸入非數(shù)字,輸入非數(shù)字時(shí)沒有雙向綁定的效果,之后無論輸入非數(shù)字還是數(shù)字都仍然沒有雙向綁定的效果。

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<style type="text/css">

.bg {

width: 100px;

height: 100px;

background-color: pink;

}

</style>

<script type="text/javascript" srcc="js/vue.js" ></script>

</head>

<body>

<div id="app">

<h1>{{msg}}</h1>

<!-- 修改msg屬性,會(huì)導(dǎo)致輸入文本框中的值跟著變化?

? 修改輸入文本框中的值,會(huì)導(dǎo)致msg屬性也跟著發(fā)生變化? -->

<input type="text" v-model.number="msg"/>

<label>同意</label><input type="checkbox" v-model="isAgree" />

<div v-bind:class="{'bg':isAgree}"></div>

</div>

<script>

new Vue({

el: '#app',

data: {

msg: 'admin',

isAgree: true

}

})

</script>

</body>

</html>




第一個(gè)VUE程序.html

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<script type="text/javascript" srcc="js/vue.js" ></script>

</head>

<body>

<div id="ctx"><h1>{{msg}},{{name}}</h1></div>

<script>

new Vue({

el: '#ctx',

data: {//頁面中需要使用的一些數(shù)據(jù)

msg: 'Hello world',

name: '張三'

}

})

</script>

</body>

</html>



個(gè)人寫的代碼解析.html


<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>詩書畫唱這個(gè)up主好有才!(runoob.com)</title>

<!--<script src="https://unpkg.com/vue/dist/vue.js"></script>-->

<script srcc="js/vue.js"></script>

</head>

<style>

.active {

? ? width: 100px;

? ? height: 100px;

? ? background: green;

}

.text-danger {

? ? background: red;

}

</style>

<body>

<div id="app">


<!--{{}}:外面的花括號(hào)是說:我這里面寫的是js語句

內(nèi)部的花括號(hào)是說:我里面的不是要顯示的文字,而是變量,我要把變量的值解析放在這-->

? <p>{{ message }}</p>

??

? <p v-html="sshc"></p>

??

? <!--v-html="sshc"中的sshc是js部分的new Vue中的內(nèi)容為HTML代碼的變量的名字。

? <p v-html="sshc"></p>的意思是把sshc的HTML內(nèi)容,內(nèi)嵌和渲染到<p></p>里面。-->

??

??

??

? <p>{{ flag?'給三連':'點(diǎn)贊 '}}</p>

?

? ? ?<p>{{typeof(num)}}</p>

? ? ? ?<p>{{num}}</p>

? ? ? ?

? ? <p>{{num+1}}</p>

??

<!--不要用num++,因?yàn)檫@個(gè)是修改變量的值了,會(huì)導(dǎo)致組件循環(huán)渲染等等,

? ?進(jìn)而報(bào)You may have an infinite update loop in a component render function,

? ?在組件呈現(xiàn)函數(shù)中可能有一個(gè)無限更新循環(huán)。

? ?的錯(cuò)誤??赡苁且?yàn)?data類似于state狀態(tài)機(jī),如果變量改變,就會(huì)多次渲染。

? 每次渲染時(shí)會(huì)渲染整個(gè)HTML的代碼等等,后面渲染到 <p>{{num+1}}</p>這個(gè)部分,因?yàn)?/span>

變量改變了,所以會(huì)重頭渲染整個(gè)HTML的代碼等等,又會(huì)渲染到 <p>{{num+1}}</p>這個(gè)部分,不同

的循環(huán),后面為什么會(huì)到num=100左右就停止呢?因?yàn)榈?00左右的時(shí)候就是內(nèi)存已經(jīng)消耗光,溢出了,

所以瀏覽器會(huì)報(bào)錯(cuò) 。

? ?

??

?以下就是修改變量的值了,不要像下面那樣寫。

? <p>{{num=num+1}}</p>

<p>{{num++}}</p>

<p>{{typeof(num++)}}</p>-->

? ?

? ? <div class="static" v-bind:class="{ active: isActive, 'text-danger': hasError }">

? ?

? ? <p>{{bangDing2}}</p>

? ? ?

? ? <input? v-model="bangDing2"? ?value={{bangDing2}}/>

? </div>

</div>


<script>

new Vue({

? el: '#app',

? data: {

? ? message: '詩書畫唱這個(gè)up主好有才!要給他的作品三連!',

? ? sshc:'<button>詩書畫唱</button>',

? ? flag:true,

? ? num:1,

? ??

? ? ?isActive: true,

? ? hasError: true,

? ? bangDing2:"雙向綁定"

? }

})

</script>

</body>

</html>




科普(知識(shí)普及)

Vue/React中出現(xiàn)兩個(gè)花括號(hào)的原因


{{}}:外面的花括號(hào)是說“我這里面寫的是js語句”,

內(nèi)部的花括號(hào)是說“我里面的不是要顯示的文字,而是變量,我要把變量的值解析放在這”






Vue: scoped 樣式與 CSS Module的區(qū)別,,


v-model雙向綁定,{{}}報(bào)錯(cuò),HBulider和VScode使用vue指令,v-bind:class【詩書畫唱】的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
福海县| 浮山县| 封开县| 满城县| 安宁市| 定安县| 贵溪市| 司法| 文化| 镇赉县| 怀仁县| 衡山县| 昌图县| 临汾市| 丰宁| 安西县| 孝昌县| 博客| 新源县| 晋江市| 聂荣县| 红桥区| 祁连县| 延寿县| 遵义市| 安图县| 丰顺县| 阿合奇县| 丹棱县| 灌云县| 泸定县| 右玉县| 松桃| 万宁市| 新邵县| 咸阳市| 金沙县| 邹平县| 巴青县| 奉化市| 当阳市|