茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    JavaScript的MVVM庫Vue.js入門學(xué)習(xí)筆記
    來源:易賢網(wǎng) 閱讀:1362 次 日期:2016-07-06 10:44:31
    溫馨提示:易賢網(wǎng)小編為您整理了“JavaScript的MVVM庫Vue.js入門學(xué)習(xí)筆記”,方便廣大網(wǎng)友查閱!

    這篇文章主要介紹了JavaScript的MVVM庫Vue.js入門學(xué)習(xí)筆記,Vue.js是一個新興的js庫,主要用于實(shí)現(xiàn)響應(yīng)的數(shù)據(jù)綁定和組合的視圖組件,需要的朋友可以參考下

    一、v-bind 縮寫

    <!-- 完整語法 -->

    <a v-bind:href="url"></a>

    <!-- 縮寫 -->

    <a :href="url"></a>

    <!-- 完整語法 -->

    <button v-bind:disabled="someDynamicCondition">Button</button>

    <!-- 縮寫 -->

    <button :disabled="someDynamicCondition">Button</button>

    二、v-on 縮寫

    <!-- 完整語法 -->

    <a v-on:click="doSomething"></a>

    <!-- 縮寫 -->

    <a @click="doSomething"></a>

    三、過濾器

    {{ message | capitalize }}

    四、條件渲染

    v-if

    <h1 v-if="ok">Yes</h1>

    <h1 v-else>No</h1>

    <div v-if="Math.random() > 0.5">

     Sorry

    </div>

    <div v-else>

     Not sorry

    </div>

    template-v-if

    <template v-if="ok">

     <h1>Title</h1>

     <p>Paragraph 1</p>

     <p>Paragraph 2</p>

    </template>

    v-show

    <h1 v-show="ok">Hello!</h1>

    五、列表渲染 for

    v-for

    <ul id="example-1">

     <li v-for="item in items">

     {{ item.message }}

     </li>

    </ul>

    var example1 = new Vue({

     el: '#example-1',

     data: {

     items: [

      { message: 'Foo' },

      { message: 'Bar' }

     ]

     }

    });

      

    <ul id="example-2">

     <li v-for="item in items">

     {{ parentMessage }} - {{ $index }} - {{ item.message }}

     </li>

    </ul>

    var example2 = new Vue({

     el: '#example-2',

     data: {

     parentMessage: 'Parent',

     items: [

      { message: 'Foo' },

      { message: 'Bar' }

     ]

     }

    });

    數(shù)組變動檢測

    Vue.js 包裝了被觀察數(shù)組的變異方法,故它們能觸發(fā)視圖更新。被包裝的方法有:push(), pop(), shift(), unshift(), splice(), sort(), reverse()

    example1.items.push({ message: 'Baz' });

    example1.items = example1.items.filter(function (item) {

     return item.message.match(/Foo/);

    }); 

    template-v-for

    <ul>

     <template v-for="item in items">

     <li>{{ item.msg }}</li>

     <li class="divider"></li>

     </template>

    </ul> 

    對象 v-for

    <ul id="repeat-object" class="demo">

     <li v-for="value in object">

     {{ $key }} : {{ value }}

     </li>

    </ul>

    new Vue({

     el: '#repeat-object',

     data: {

     object: {

      FirstName: 'John',

      LastName: 'Doe',

      Age: 30

     }

     }

    }); 

    值域 v-for

    <div>

     <span v-for="n in 10">{{ n }} </span>

    </div>

    六、方法與事件處理器

    方法處理器

    <div id="example">

     <button v-on:click="greet">Greet</button>

    </div>

    var vm = new Vue({

     el: '#example',

     data: {

     name: 'Vue.js'

     },

     // 在 `methods` 對象中定義方法

     methods: {

     greet: function (event) {

      // 方法內(nèi) `this` 指向 vm

      alert('Hello ' + this.name + '!')

      // `event` 是原生 DOM 事件

      alert(event.target.tagName)

     }

     }

    })

    // 也可以在 JavaScript 代碼中調(diào)用方法

    vm.greet(); // -> 'Hello Vue.js!'

    內(nèi)聯(lián)語句處理器

    <div id="example-2">

     <button v-on:click="say('hi')">Say Hi</button>

     <button v-on:click="say('what')">Say What</button>

    </div>

    new Vue({

     el: '#example-2',

     methods: {

     say: function (msg) {

      alert(msg)

     }

     }

    });

    有時也需要在內(nèi)聯(lián)語句處理器中訪問原生 DOM 事件??梢杂锰厥庾兞?$event 把它傳入方法

    <button v-on:click="say('hello!', $event)">Submit</button>

     methods: {

     say: function (msg, event) {

     // 現(xiàn)在我們可以訪問原生事件對象

     event.preventDefault()

     }

    };

    ## 事件修飾符

    <!-- 阻止單擊事件冒泡 -->

    <a v-on:click.stop="doThis"></a>

    <!-- 提交事件不再重載頁面 -->

    <form v-on:submit.prevent="onSubmit"></form>

    <!-- 修飾符可以串聯(lián) -->

    <a v-on:click.stop.prevent="doThat">

    <!-- 只有修飾符 -->

    <form v-on:submit.prevent></form>

    ## 按鍵修飾符

    <!-- 只有在 keyCode 是 13 時調(diào)用 vm.submit() -->

    <input v-on:keyup.13="submit">

    <!-- 同上 -->

    <input v-on:keyup.enter="submit">

    <!-- 縮寫語法 -->

    <input @keyup.enter="submit">

    全部的按鍵別名:enter,tab,delete,esc,space,up,down,left,right

    ## 其他實(shí)例

    new Vue({

     el: '#demo',

     data: {

     newLabel: '',

     stats: stats

     },

     methods: {

     add: function (e) {

      e.preventDefault()

      if (!this.newLabel) {

      return;

      }

      this.stats.push({

      label: this.newLabel,

      value: 100

      });

      this.newLabel = '';

     },

     remove: function (stat) {

      if (this.stats.length > 3) {

      this.stats.$remove(stat); // 注意這里的$remove

      } else {

      alert('Can\'t delete more!')

      }

     }

     }

    });

    七、過渡

    CSS 過渡

    <div v-if="show" transition="expand">hello</div>

    然后為 .expand-transition, .expand-enter 和 .expand-leave 添加 CSS 規(guī)則:

    /* 必需 */

    .expand-transition {

     transition: all .3s ease;

     height: 30px;

     padding: 10px;

     background-color: #eee;

     overflow: hidden;

    }

    /* .expand-enter 定義進(jìn)入的開始狀態(tài) */

    /* .expand-leave 定義離開的結(jié)束狀態(tài) */

    .expand-enter, .expand-leave {

     height: 0;

     padding: 0 10px;

     opacity: 0;

    }

    你可以在同一元素上通過動態(tài)綁定實(shí)現(xiàn)不同的過渡:

    <div v-if="show" :transition="transitionName">hello</div> 

    new Vue({

     el: '...',

     data: {

     show: false,

     transitionName: 'fade'

     }

    }

    另外,可以提供 JavaScript 鉤子:

    Vue.transition('expand', {

     beforeEnter: function (el) {

     el.textContent = 'beforeEnter'

     },

     enter: function (el) {

     el.textContent = 'enter'

     },

     afterEnter: function (el) {

     el.textContent = 'afterEnter'

     },

     enterCancelled: function (el) {

     // handle cancellation

     },

     beforeLeave: function (el) {

     el.textContent = 'beforeLeave'

     },

     leave: function (el) {

     el.textContent = 'leave'

     },

     afterLeave: function (el) {

     el.textContent = 'afterLeave'

     },

     leaveCancelled: function (el) {

     // handle cancellation

     }

    });

    八、組件

    1.注冊

    // 定義

    var MyComponent = Vue.extend({

     template: '<div>A custom component!</div>'

    });

    // 注冊

    Vue.component('my-component', MyComponent);

    // 創(chuàng)建根實(shí)例

    new Vue({

     el: '#example'

    });

    <div id="example">

     <my-component></my-component>

    </div>

    或者直接寫成:

    Vue.component('my-component', {

      template: '<div>A custom component!</div>'

    });

     // 創(chuàng)建根實(shí)例

    new Vue({

     el: '#example'

    });

    <div id="example">

      <my-component></my-component>

    </div>

    2.使用prop 傳遞數(shù)據(jù)

    實(shí)例一:

    Vue.component('child', {

     // 聲明 props

     props: ['msg'],

     // prop 可以用在模板內(nèi)

     // 可以用 `this.msg` 設(shè)置

     template: '<span>{{ msg }}</span>'

    });

    <child msg="hello!"></child>

    實(shí)例二:

    Vue.component('child', {

     // camelCase in JavaScript

     props: ['myMessage'],

     template: '<span>{{ myMessage }}</span>'

    });

    <!-- kebab-case in HTML -->

    <child my-message="hello!"></child>

    3.動態(tài)props

    <div>

     <input v-model="parentMsg">

     <br>

     <child v-bind:my-message="parentMsg"></child>

    </div>

    使用 v-bind 的縮寫語法通常更簡單:

    <child :my-message="parentMsg"></child>

    4.Prop 綁定類型

    prop 默認(rèn)是單向綁定:當(dāng)父組件的屬性變化時,將傳導(dǎo)給子組件,但是反過來不會。這是為了防止子組件無意修改了父組件的狀態(tài)——這會讓應(yīng)用的數(shù)據(jù)流難以理解。不過,也可以使用 .sync 或 .once 綁定修飾符顯式地強(qiáng)制雙向或單次綁定:

    比較語法:

    <!-- 默認(rèn)為單向綁定 -->

    <child :msg="parentMsg"></child>

    <!-- 雙向綁定 -->

    <child :msg.sync="parentMsg"></child>

    <!-- 單次綁定 -->

    <child :msg.once="parentMsg"></child>

    其他實(shí)例:

    <modal :show.sync="showModal">

     <h3 slot="header">custom header</h3>

     </modal>

    </div>

    5.Prop 驗(yàn)證

    組件可以為 props 指定驗(yàn)證要求。當(dāng)組件給其他人使用時這很有用,因?yàn)檫@些驗(yàn)證要求構(gòu)成了組件的 API,確保其他人正確地使用組件。此時 props 的值是一個對象,包含驗(yàn)證要求:

    Vue.component('example', {

     props: {

     // 基礎(chǔ)類型檢測 (`null` 意思是任何類型都可以)

     propA: Number,

     // 必需且是字符串

     propB: {

      type: String,

      required: true

     },

     // 數(shù)字,有默認(rèn)值

     propC: {

      type: Number,

      default: 100

     },

     // 對象/數(shù)組的默認(rèn)值應(yīng)當(dāng)由一個函數(shù)返回

     propD: {

      type: Object,

      default: function () {

      return { msg: 'hello' }

      }

     },

     // 指定這個 prop 為雙向綁定

     // 如果綁定類型不對將拋出一條警告

     propE: {

      twoWay: true

     },

     // 自定義驗(yàn)證函數(shù)

     propF: {

      validator: function (value) {

      return value > 10

      }

     },

     // 轉(zhuǎn)換函數(shù)(1.0.12 新增)

     // 在設(shè)置值之前轉(zhuǎn)換值

     propG: {

      coerce: function (val) {

      return val + '' // 將值轉(zhuǎn)換為字符串

      }

     },

     propH: {

      coerce: function (val) {

      return JSON.parse(val) // 將 JSON 字符串轉(zhuǎn)換為對象

      }

     }

     }

    });

    其他實(shí)例:

    Vue.component('modal', {

     template: '#modal-template',

     props: {

     show: {

      type: Boolean,

      required: true,

      twoWay: true

     }

     }

    });

    6.注冊

    // 定義

    var MyComponent = Vue.extend({

     template: '<div>A custom component!</div>'

    });

    // 注冊

    Vue.component('my-component', MyComponent);

    // 創(chuàng)建根實(shí)例

    new Vue({

     el: '#example'

    });

    <div id="example">

     <my-component></my-component>

    </div>

    或者直接寫成:

    Vue.component('my-component', {

      template: '<div>A custom component!</div>'

    });

     // 創(chuàng)建根實(shí)例

    new Vue({

     el: '#example'

    });

    <div id="example">

      <my-component></my-component>

    </div>

    7.使用prop 傳遞數(shù)據(jù)

    實(shí)例一:

    Vue.component('child', {

     // 聲明 props

     props: ['msg'],

     // prop 可以用在模板內(nèi)

     // 可以用 `this.msg` 設(shè)置

     template: '<span>{{ msg }}</span>'

    });

    <child msg="hello!"></child>

    實(shí)例二:

    Vue.component('child', {

     // camelCase in JavaScript

     props: ['myMessage'],

     template: '<span>{{ myMessage }}</span>'

    });

    <!-- kebab-case in HTML -->

    <child my-message="hello!"></child>

    8.動態(tài)props

    <div>

     <input v-model="parentMsg">

     <br>

     <child v-bind:my-message="parentMsg"></child>

    </div>

    使用 v-bind 的縮寫語法通常更簡單:

    ?

    1

    <child :my-message="parentMsg"></child>

    9.Prop 綁定類型

    prop 默認(rèn)是單向綁定:當(dāng)父組件的屬性變化時,將傳導(dǎo)給子組件,但是反過來不會。這是為了防止子組件無意修改了父組件的狀態(tài)——這會讓應(yīng)用的數(shù)據(jù)流難以理解。不過,也可以使用 .sync 或 .once 綁定修飾符顯式地強(qiáng)制雙向或單次綁定:

    比較語法:

    <!-- 默認(rèn)為單向綁定 -->

    <child :msg="parentMsg"></child>

    <!-- 雙向綁定 -->

    <child :msg.sync="parentMsg"></child>

    <!-- 單次綁定 -->

    <child :msg.once="parentMsg"></child>

    其他實(shí)例:

    <modal :show.sync="showModal">

     <h3 slot="header">custom header</h3>

     </modal>

    </div>

    10.Prop 驗(yàn)證

    組件可以為 props 指定驗(yàn)證要求。當(dāng)組件給其他人使用時這很有用,因?yàn)檫@些驗(yàn)證要求構(gòu)成了組件的 API,確保其他人正確地使用組件。此時 props 的值是一個對象,包含驗(yàn)證要求:

    Vue.component('example', {

     props: {

     // 基礎(chǔ)類型檢測 (`null` 意思是任何類型都可以)

     propA: Number,

     // 必需且是字符串

     propB: {

      type: String,

      required: true

     },

     // 數(shù)字,有默認(rèn)值

     propC: {

      type: Number,

      default: 100

     },

     // 對象/數(shù)組的默認(rèn)值應(yīng)當(dāng)由一個函數(shù)返回

     propD: {

      type: Object,

      default: function () {

      return { msg: 'hello' }

      }

     },

     // 指定這個 prop 為雙向綁定

     // 如果綁定類型不對將拋出一條警告

     propE: {

      twoWay: true

     },

     // 自定義驗(yàn)證函數(shù)

     propF: {

      validator: function (value) {

      return value > 10

      }

     },

     // 轉(zhuǎn)換函數(shù)(1.0.12 新增)

     // 在設(shè)置值之前轉(zhuǎn)換值

     propG: {

      coerce: function (val) {

      return val + '' // 將值轉(zhuǎn)換為字符串

      }

     },

     propH: {

      coerce: function (val) {

      return JSON.parse(val) // 將 JSON 字符串轉(zhuǎn)換為對象

      }

     }

     }

    });

    其他實(shí)例:

    Vue.component('modal', {

     template: '#modal-template',

     props: {

     show: {

      type: Boolean,

      required: true,

      twoWay: true

     }

     }

    });

    11.使用slot分發(fā)內(nèi)容

    <slot> 元素作為組件模板之中的內(nèi)容分發(fā)插槽。這個元素自身將被替換。

    有 name 特性的 slot 稱為命名 slot。 有 slot 特性的內(nèi)容將分發(fā)到名字相匹配的命名 slot。

    例如,假定我們有一個 multi-insertion 組件,它的模板為:

    <div>

     <slot name="one"></slot>

     <slot></slot>

     <slot name="two"></slot>

    </div>

    父組件模板:

    <multi-insertion>

     <p slot="one">One</p>

     <p slot="two">Two</p>

     <p>Default A</p>

    </multi-insertion>

    渲染結(jié)果為:

    <div>

     <p slot="one">One</p>

     <p>Default A</p>

     <p slot="two">Two</p>

    </div>

    更多信息請查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機(jī)網(wǎng)站地址:JavaScript的MVVM庫Vue.js入門學(xué)習(xí)筆記
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2026上岸·考公考編培訓(xùn)報班

    • 報班類型
    • 姓名
    • 手機(jī)號
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報警專用圖標(biāo)