vue入門3---class與style綁定姨伤、條件渲染指令哨坪、列表渲染

一、class與style綁定

  • 1.在應(yīng)用界面中, 某個(些)元素的樣式是變化的
    class/style 綁定就是專門用來實現(xiàn)動態(tài)樣式效果的技術(shù)
  2. class綁定:
    class='xxx'
    xxx是字符串: 'classA'
    xxx是對象: {classA:isA, classB: isB}
    xxx是數(shù)組: ['classA', 'classB']
  3. style綁定
    :style="{color: activeColor, fontSize: fontSize +    'px'}",activeColor/fontSize是data屬性
<style>
    .aClass {
        color: #f00;
    }
    .bClass {
        color: #00f;
    }
</style>
<div id="demo1">
    <h1>class綁定</h1>
    <p class="cClass" :class="a">xxx是字符串</p>
    <!--屬性名:類的名字乍楚,屬性值:true/false-->
    <p :class="{aClass: isA, bClass: isB}">xxx是對象</p>
    <p :class="['aClass', 'bClass']">xxx是數(shù)組</p>
    <button type="button" @click="update">更改</button>
    <p :style="{color: activeColor, fontSize: fontSize + 'px'}">style綁定</p>    <!--{} 是js對象-->
</div>
<script>
 var vm1 = new Vue({
        el: '#demo1',
        data: {
            a: 'aClass',
            isA: true,
            isB: false,
            activeColor: 'red',
            fontSize: 20
        },
        methods: {
            update() {
                // 一定用this引用data中變量名
                this.a = 'bClass';
                this.isA = false;
                this.isB = true;
                this.activeColor = 'green';
                this.fontSize = 30;
            }
        }
    });
</script>

二当编、條件渲染指令:

  • v-if
  • v-else
  • v-show
  • v-if 與 v-show的區(qū)別

    v-if 隱藏是通過將標(biāo)簽移除;v-show是通過style display=none,標(biāo)簽還存在徒溪;v-if還需要創(chuàng)建標(biāo)簽才可以顯示忿偷,標(biāo)簽過多的話影響速度拧篮。

<div id="demo2">
<p v-if="ok">成功了</p>
<p v-else>失敗</p>

<p v-show="ok">show成功了</p>
<p v-show="!ok">show失敗</p>
<button @click="ok=!ok">切換</button>
</div>
<script>
new Vue({
   el: '#demo2',
   data: {
      ok: false
   }
})
</script>

三、列表渲染

  • 定義: 使用v-for指令根據(jù)一組數(shù)組的選項列表進行渲染
  • 注:1.v-for是1.0之后的版本才有的牵舱,1.0之前的版本用v-repeat串绩;
    2.在 v-for 塊中,我們擁有對父作用域?qū)傩缘耐耆L問權(quán)限芜壁。v-for 還支持一個可選的第二個參數(shù)為當(dāng)前項的索引礁凡;
    3.vue本身只是監(jiān)視數(shù)組的改變,沒有監(jiān)視數(shù)組內(nèi)部數(shù)據(jù)的改變慧妄,因此vue重寫了數(shù)組中的一系列改變數(shù)組內(nèi)部結(jié)構(gòu)數(shù)據(jù)的方法顷牌,即變異方法,如splice塞淹、push等窟蓝,可實現(xiàn)--原生功能、更新界面
1饱普、替換與刪除
<!--
1. 列表顯示
  數(shù)組: v-for / index
  對象: v-for / key
2. 列表的更新顯示
  刪除item
  替換item
-->
<div id="demo">
  <h2>測試: v-for 遍歷數(shù)組</h2>
  <ul>
    <li v-for="(p, index) in persons" :key="index">
      {{index}}--{{p.name}}--{{p.age}}
      --<button @click="deleteP(index)">刪除</button>
      --<button @click="updateP(index, {name:'Cat', age: 16})">更新</button>
    </li>
  </ul>
  <button @click="addP({name: 'xfzhang', age: 18})">添加</button>
  <h2>測試: v-for 遍歷對象</h2>
  <ul>
    <li v-for="(item, key) in persons[1]" :key="key">{{key}}={{item}}</li>
  </ul>
</div>
<script type="text/javascript">
  new Vue({
    el: '#demo',
    data: {
      persons: [ // vue本身只是監(jiān)視persons的改變运挫,沒有監(jiān)視數(shù)組內(nèi)部數(shù)據(jù)的改變
        {name: 'Tom', age:18},
        {name: 'Jack', age:17},
        {name: 'Bob', age:19},
        {name: 'Mary', age:16}
      ]
    },
    methods: {
      deleteP (index) {
      // 刪除persons中指定index的內(nèi)容
        this.persons.splice(index, 1) 
      // 此處splice,調(diào)用了不是原生數(shù)組的splice(), 而是一個vue變異方法套耕,功能: // 1. 調(diào)用原生的數(shù)組的對應(yīng)方法 // 2. 更新界面
      },
     updateP (index, newP) {
        console.log('updateP', index, newP)
        // this.persons[index] = newP  // 并沒有改變persons本身谁帕,數(shù)組內(nèi)部發(fā)生改變,并沒有調(diào)用變異方法
        this.persons.splice(index, 1, newP)
        // this.persons = [] //改變person
      },

      addP (newP) {
        this.persons.push(newP)
      }
    }
  })
</script>
2冯袍、過濾與排序

想要顯示一個數(shù)組的過濾或排序副本匈挖,而不實際改變或重置原始數(shù)據(jù)。在這種情況下康愤,可以創(chuàng)建返回過濾或排序數(shù)組的計算屬性儡循。

<div id="demo">
  <input type="text" v-model="searchName">
  <ul>
    <li v-for="(p, index) in filterPersons" :key="index">
      {{index}}--{{p.name}}--{{p.age}}
    </li>
  </ul>
  <div>
    <button @click="setOrderType(2)">年齡升序</button>
    <button @click="setOrderType(1)">年齡降序</button>
    <button @click="setOrderType(0)">原本順序</button>
  </div>
</div>
<script type="text/javascript">
  new Vue({
    el: '#demo',
    data: {
      searchName: '',
      orderType: 0, // 0代表不排序, 1代表降序, 2代表升序
      persons: [
        {name: 'Tom', age:18},
        {name: 'Jack', age:17},
        {name: 'Bob', age:19},
        {name: 'Mary', age:16}
      ]
    },
    computed: {
      // 計算屬性:可用于快速計算視圖(View)中顯示的屬性。這些計算將被緩存征冷,并且只在需要時更新择膝。
      filterPersons () {
        // 取出相關(guān)數(shù)據(jù)
        const {searchName, persons, orderType} = this;
        // 最終需要顯示的數(shù)組
        let arr资盅;
        // 過濾數(shù)組
        if(searchName.trim()) {
          arr = persons.filter(p => p.name.indexOf(searchName)!==-1)
        }
        // 排序
        if(orderType) {
          arr.sort(function (p1, p2) { // 如果返回負數(shù) p1在前调榄,返回正數(shù)P2在前
            if(orderType===1) { // 降序
              return p2.age-p1.age;
            } else { // 升序
              return p1.age-p2.age呵扛;
            }
          })
        }
        return arr每庆;
      }
    },
    methods: {
      setOrderType (orderType) {
        this.orderType = orderType;
      }
    }
  })
</script>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末今穿,一起剝皮案震驚了整個濱河市缤灵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖腮出,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帖鸦,死亡現(xiàn)場離奇詭異,居然都是意外死亡胚嘲,警方通過查閱死者的電腦和手機作儿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來馋劈,“玉大人攻锰,你說我怎么就攤上這事〖宋恚” “怎么了娶吞?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長械姻。 經(jīng)常有香客問我妒蛇,道長,這世上最難降的妖魔是什么楷拳? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任绣夺,我火速辦了婚禮,結(jié)果婚禮上唯竹,老公的妹妹穿的比我還像新娘乐导。我一直安慰自己,他們只是感情好浸颓,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著旺拉,像睡著了一般产上。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蛾狗,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天晋涣,我揣著相機與錄音,去河邊找鬼沉桌。 笑死谢鹊,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的留凭。 我是一名探鬼主播佃扼,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蔼夜!你這毒婦竟也來了兼耀?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瘤运,沒想到半個月后窍霞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡拯坟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年但金,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片郁季。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡冷溃,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出巩踏,到底是詐尸還是另有隱情秃诵,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布塞琼,位于F島的核電站菠净,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏彪杉。R本人自食惡果不足惜毅往,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望派近。 院中可真熱鬧攀唯,春花似錦、人聲如沸渴丸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谱轨。三九已至戒幔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間土童,已是汗流浹背诗茎。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留献汗,地道東北人敢订。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像罢吃,于是被迫代替她去往敵國和親楚午。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容