vue 基礎(chǔ) v-if v-else-if v-else v-for v-show v-bind:key v-on methods filters computed

v-if 判斷

根據(jù)data里的數(shù)據(jù)判斷真假

<div id="box">
       <p v-if="false">我是p標(biāo)簽</p>  // false的時候p標(biāo)簽被刪除 不顯示
    </div>
    <script>
       new Vue({
           el: '#box',
       })
    </script>

可直接在v-if=' true / false ' 也可以在data里面控制

 <div id="box">
       <p v-if="name">我是p標(biāo)簽</p>
    </div>
    <script>
       new Vue({
           el: '#box',
           data:{
               name:false
           }
       })
    </script>

也可以用判斷

 <div id="box">
       <p v-if="name === '1'">我是p標(biāo)簽</p>
    </div>
    <script>
       new Vue({
           el: '#box',
           data:{
               name:'2'
           }
       })
    </script>

v-else-if 相當(dāng)于 else if(){}

<div id="box">
        <p v-if="name === '1'">我是p標(biāo)簽</p>
        <p v-else-if="name === '2'">我是2p標(biāo)簽</p>
    </div>
    <script>
       new Vue({
           el: '#box',
           data:{
               name:'2'
           }
       })
    </script>

v-else 相當(dāng)于 else{}

    <div id="box">
        <p v-if="name === '1'">我是p標(biāo)簽</p>
        <p v-else-if="name === '2'">我是2p標(biāo)簽</p>
        <p v-else>我什么都不是</p>
    </div>
    <script>
       new Vue({
           el: '#box',
           data:{
               name:'3'
           }
       })
    </script>

小案例

    <div id="box">
        <input type="text" v-model="name">
        <p v-if="name === '1'">我是p標(biāo)簽</p>
        <p v-else-if="name === '2'">我是2p標(biāo)簽</p>
        <p v-else>我什么都不是</p>
    </div>
    <script>
       new Vue({
           el: '#box',
           data:{
               name:'3'
           }
       })
    </script>
 <div id="box">
        <input type="text" v-model="name">
        <p v-if="name === '1'">
            用戶名:<input type="text"> <!--vue有復(fù)用的機制耀盗,當(dāng)檢測到2個標(biāo)簽一樣時會用原來渲染好的標(biāo)簽趾代,這樣可以節(jié)省重新渲染泞遗,節(jié)省性能-->
        </p>
        <p v-else-if="name === '2'">
            密碼:<input type="text"> 
        </p>
        <p v-else>我什么都不是</p>
    </div>
    <script>
       new Vue({
           el: '#box',
           data:{
               name:'2'
           }
       })
    </script>

如果要讓上面不出現(xiàn)這樣 用到

v-bind:key = ''

<div id="box">
        <input type="text" v-model="name">
        <p v-if="name === '1'">
            用戶名:<input type="text" v-bind:key="1">
        </p>
        <p v-else-if="name === '2'">
            密碼:<input type="text" v-bind:key="2">  <!--v-bind:key 就是給2個input一個標(biāo)識符学搜,告訴vue2個不是同一個input vue就不會拿上面的標(biāo)簽了會渲染當(dāng)前的-->
        </p>
        <p v-else>我什么都不是</p>
    </div>
    <script>
       new Vue({
           el: '#box',
           data:{
               name:'2'
           }
       })
    </script>

v-on 綁定事件

語法:v-on:click="fn" 簡寫 @click='fn'
methods:(方法)存放所有事件函數(shù)

    <div id="box" v-on:click="fn">
       我是div
    </div>
    <script>
       new Vue({
           el: '#box',
           methods:{
               fn: function (  ) {
                   alert( 0 );
               }
           }
       })
    </script>
image.png
    <div id="box" @click="fn">
       我是div
    </div>
    <script>
       new Vue({
           el: '#box',
/*這個對象用來寫各種各樣的事件函數(shù) 放在這里面*/
           methods:{
              fn(){ // es6寫法 只有在對象里面才能這樣寫
                  alert( 0 )
              }
           }
       })
    </script>

小案例

    <div id="box" >
        <p @click="fn">點擊我切換</p>
        <div v-if="change"> 我是第一個div </div>
        <div v=else> 我是第二個div </div>
    </div>
    <script>
       new Vue({
           el: '#box',
           data: {
               change: true
           },
           methods:{
               fn(){
                this.change = !this.change;
               }
           }
       })
    </script>

v-show 顯示隱藏 控制display: block none

<div id="box" >
        <p @click="fn">點擊我切換</p>
        <div v-show="change"> 我是第一個div </div>
    </div>
    <script>
       new Vue({
           el: '#box',
           data: {
               change: true
           },
           methods:{
               fn(){
                this.change = !this.change;
               }
           }
       })
    </script>
    <div id="box" >
        <!--傳參 fn(參數(shù))-->
        <p @click="fn('abcd')">點擊我切換</p>
        <div v-show="change"> 我是第一個div </div>
    </div>
    <script>
       new Vue({
           el: '#box',
           data: {
               change: true
           },
           methods:{
               fn( a ){  // 形參接收
                   console.log( a )
                   this.change = !this.change;
               }
           }
       })
    </script>

filters過濾器

        <div id="box">
            {{inp|fn('明天您好')}}
            <!--|無論前面什么值右邊都會執(zhí)行 inp的值會傳到fn里面 通過實參傳給下面的函數(shù)
                如果要傳其他參數(shù) fn('自定義數(shù)據(jù)')
                下面 接收是第二個形參 第一個為inp的參數(shù)
            -->
            <input type="text" v-model="inp" >
            <div v-html="inp"></div>
        </div>
        <script>

            new Vue({
                el: '#box',
                data:{
                    inp:''
                },
                methods:{},
                // 過濾器 如果沒有return 沒有東西返回 就會全部過慮
                filters:{
                    fn( val , zidingyi ){
                        let reg = /\D/;
                        console.log( reg.test(val) , zidingyi )
                        if( !reg.test(val) ){
                            console.log( 222 )
                            return '$'+val+'元';
                        }
                    },
                }
            })
        </script>

computed 計算器

        <div id="box">
            <p>{{ num }}</p>
            <p>{{ fn }}</p>
        </div>
        <script>
            new Vue({
                el: '#box',
                data:{
                    num: '123'
                },
                computed: { // 實時計算
                    fn(){
                        return this.num = '456';
                    }
                }
            })
        </script>
        <script>
            var box = new Vue({
                el: '#box',
                data:{
                    txt1: '',
                    txt2: ''
                },
                /* 實時計算 當(dāng)數(shù)據(jù)改變時執(zhí)行
                *  上面用這個fn時不用()
                *  如果加()會報錯  所以不能進行傳參
                * */
                computed: {
                    fn( b ){
                        console.log( b )
                        return '總價格'+this.txt1 * this.txt2;
                    }
                },
                /* 這種方式上面要加()才可以執(zhí)行 */
                methods: {
                    fn1(){
                        return '總價格'+this.txt1 * this.txt2;
                    }
                }
            })
        </script>

v-for 循環(huán) 相當(dāng)于 for in

        <div id="box">
            <ul>
                <li v-for="i in news">{{ i }}</li>
                <!-- 跟for in一樣的 -->
            </ul>
        </div>
        <script>
            new Vue({
                el: '#box',
                data: {
                    news: ['今天是星期一','今天是星期二','今天是星期三','今天是星期四','今天是星期五',]
                }
            })
        </script>
        <div id="box">
            <ul>
                <li v-for="(i , index) in news">{{ i }}----{{ index }}</li>
                <!--i代表數(shù)組里的1 2 3 4 5  index 代表是序號-->
            </ul>
        </div>
        <script>
            new Vue({
                el: '#box',
                data: {
                    news: ['今天是星期一','今天是星期二','今天是星期三','今天是星期四','今天是星期五',]
                }
            })
        </script>

news里面是json時

      <div id="box">
            <ul>
                <li v-for="(i , index) in news">{{ i.name }}----{{ index }}</li>
                <!--i代表數(shù)組里的1 2 3 4 5  index 代表是序號-->
            </ul>
        </div>
        <script>
           new Vue({
               el: '#box',
               data: {
                   news: [{name: 1},{name: 2},{name: 3},{name: 4},{name: 5}]
               }
           })
        </script>
        <div id="box">
            <ul>
                <li v-for="(i , index) in fn()">{{ i }}</li>
            </ul>
        </div>
        <script>
           new Vue({
               el: '#box',
               data: {
                   news: [{name: 1},{name: 2},{name: 3},{name: 4},{name: 5}]
               },
               methods: {
                   fn(){
                       var arr = [];
                       for(var i = 0;i < 10; i++){
                           arr.push( i )
                       }
                       return arr;
                   }
               }
           })
        </script>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市锐涯,隨后出現(xiàn)的幾起案子尤误,更是在濱河造成了極大的恐慌哮兰,老刑警劉巖丹拯,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幌缝,死亡現(xiàn)場離奇詭異,居然都是意外死亡阁将,警方通過查閱死者的電腦和手機潦刃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門侮措,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人乖杠,你說我怎么就攤上這事分扎。” “怎么了胧洒?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵畏吓,是天一觀的道長墨状。 經(jīng)常有香客問我,道長庵佣,這世上最難降的妖魔是什么歉胶? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮巴粪,結(jié)果婚禮上通今,老公的妹妹穿的比我還像新娘。我一直安慰自己肛根,他們只是感情好辫塌,可當(dāng)我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著派哲,像睡著了一般臼氨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上芭届,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天储矩,我揣著相機與錄音,去河邊找鬼褂乍。 笑死持隧,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的逃片。 我是一名探鬼主播屡拨,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼褥实!你這毒婦竟也來了呀狼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤损离,失蹤者是張志新(化名)和其女友劉穎哥艇,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體草冈,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡她奥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了怎棱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哩俭。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拳恋,靈堂內(nèi)的尸體忽然破棺而出凡资,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布隙赁,位于F島的核電站垦藏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏伞访。R本人自食惡果不足惜掂骏,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望厚掷。 院中可真熱鬧弟灼,春花似錦、人聲如沸冒黑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抡爹。三九已至掩驱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間冬竟,已是汗流浹背欧穴。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留泵殴,地道東北人苔可。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像袋狞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子映屋,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,851評論 2 361