久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      vue計(jì)算屬性是什么

      vue計(jì)算屬性:在【Vue.js 0.12.8】版本之前,只要讀取相應(yīng)的計(jì)算屬性,對(duì)應(yīng)的getter就會(huì)重新執(zhí)行。而在【Vue.js 0.12.8】版本中,在這方面進(jìn)行了優(yōu)化,即只有計(jì)算屬性依賴的屬性值發(fā)生了改變時(shí)才會(huì)重新執(zhí)行g(shù)etter。

      vue計(jì)算屬性是什么

      vue計(jì)算屬性:

      一、計(jì)算屬性

      計(jì)算屬性就是當(dāng)其依賴屬性的值發(fā)生變化時(shí),這個(gè)屬性的值會(huì)自動(dòng)更新,與之相關(guān)的DOM部分也會(huì)同步自動(dòng)更新。

      代碼如下:

      <div id="example">         <input type="text" v-model="didi">         <input type="text" v-model="family">         <br>         didi={{didi}},family={{family}},didiFamily={{didiFamily}}     </div>     var vm = new Vue({         el:'#example',         data:{             didi:'didi',             family:'family'         },         computed:{             <!-- 一個(gè)計(jì)算屬性的getter -->             didiFamily:function(){                 <!-- this指向vm實(shí)例 -->                 return this.didi+this.family             }         }     })

        當(dāng)vm.didi和vm.family的值發(fā)生變化時(shí),vm.didiFamily的值會(huì)自動(dòng)更新,并且會(huì)自動(dòng)同步更新DOM部分。

        前面實(shí)例只提供了getter,實(shí)際上除了getter。我們還可以設(shè)置計(jì)算屬性的setter。代碼示例如下:

      <div id="example">         <input type="text" v-model="didi">         <input type="text" v-model="family">         <br>         didi={{didi}},family={{family}},didiFamily={{didiFamily}}     </div>     var vm = new Vue({         el:'#example',         data:{             didi:'didi',             family:'family'         },         computed:{             <!-- 一個(gè)計(jì)算屬性的getter -->             didiFamily:function(){                 get:function(){                     <!-- this指向vm實(shí)例 -->                     return this.didi+this.family                 },                 <!-- 一個(gè)計(jì)算屬性的setter -->                 set:function(newVal){                     var names = newVal.split('')                     this.didi = names[0]                     this.didi = names[1]                 }             }         }     })

      當(dāng)設(shè)置vm.didiFamily的值時(shí),vm.didi和vm.family的值也會(huì)自動(dòng)更新。

      二、計(jì)算屬性緩存

        計(jì)算屬性的特性的確很誘人,但是如果在計(jì)算屬性方法中執(zhí)行大量的耗時(shí)操作,則可能會(huì)帶來(lái)一些性能問(wèn)題。例如,在計(jì)算屬性getter中循環(huán)一個(gè)大的數(shù)組以執(zhí)行很多操作,那么當(dāng)頻繁調(diào)用該計(jì)算屬性時(shí),就會(huì)導(dǎo)致大量不必要的運(yùn)算。

        在Vue.js 0.12.8版本之前,只要讀取相應(yīng)的計(jì)算屬性,對(duì)應(yīng)的getter就會(huì)重新執(zhí)行。而在Vue.js 0.12.8版本中,在這方面進(jìn)行了優(yōu)化,即只有計(jì)算屬性依賴的屬性值發(fā)生了改變時(shí)才會(huì)重新執(zhí)行g(shù)etter。

        這樣也存在一個(gè)問(wèn)題,就是只有Vue實(shí)例中被觀察的數(shù)據(jù)屬性發(fā)生了改變時(shí)才會(huì)重新執(zhí)行g(shù)etter。但是有時(shí)候計(jì)算屬性依賴實(shí)時(shí)3的非觀察數(shù)據(jù)屬性。代碼示例如下:

      var vm = new Vue({    data:{        welcome:'welcome to join didiFamily'              },    computed:{         example:function(){             return Date.now() + this.welcome              }             }   })

        我們需要在每次訪問(wèn)example時(shí)都取得最新的時(shí)間而不是緩存的時(shí)間。從Vue.js 0.12.11版本開始,默認(rèn)提供了緩存開關(guān),在計(jì)算屬性對(duì)象中指定cache字段來(lái)控制是否開啟緩存。代碼示例如下:

      var vm = new Vue({    data:{        welcome:'welcome to join didiFamily'              },    computed:{         example:function(){             //關(guān)閉緩存,默認(rèn)為true             cache:false,             get:function(){              return Date.now() + this.welcome                             }                }             }   })

      設(shè)置cache為false關(guān)閉緩存之后,每次直接訪問(wèn)vm.example時(shí)都會(huì)重新執(zhí)行g(shù)etter方法。

      三、常見問(wèn)題

        在實(shí)際開發(fā)中使用計(jì)算屬性時(shí),我們會(huì)遇到各種各樣的問(wèn)題,以下是搜集到的一些常見問(wèn)題以及解決方案。

      計(jì)算屬性getter不執(zhí)行的場(chǎng)景

        從前面我們了解到,當(dāng)計(jì)算屬性依賴的數(shù)據(jù)屬性發(fā)生改變時(shí),計(jì)算屬性的getter方法就會(huì)執(zhí)行。但是在有些情況下,雖然依賴數(shù)據(jù)屬性發(fā)生了改變,但計(jì)算屬性的getter方法并不會(huì)執(zhí)行。但是在有些情況下,雖然依賴數(shù)據(jù)屬性發(fā)生了改變,但計(jì)算屬性的getter方法并不會(huì)執(zhí)行。

            當(dāng)包含計(jì)算屬性的節(jié)點(diǎn)被移除并且模板中其他地方?jīng)]有再引用該屬性時(shí),那么對(duì)應(yīng)的計(jì)算屬性的getter方法不會(huì)執(zhí)行。代碼示例如下:

      <div id="example">         <button @click='toggleShow'>Toggle Show Total Price</button>         <p v-if="showTotal">Total Price = {{totalPrice}}</p>     </div>     new Vue({         el:'#example',         data:{             showTotal:true,             basePrice:100         },         computed:{             totalPrice:function(){                 return this.basePrice + 1             }         },         methods:{             toggleShow:function(){                 this.showTotal = !this.showTotal             }         }     })

      當(dāng)點(diǎn)擊按鈕使showTotal為false,此時(shí)P元素會(huì)被移除,在P元素內(nèi)部的計(jì)算屬性totalPrice的getter方法不會(huì)執(zhí)行。但是當(dāng)計(jì)算屬性一直出現(xiàn)在模板中時(shí),getter方法還是會(huì)被執(zhí)行

        2.在v-repeat中使用計(jì)算屬性

          有時(shí)候從后端獲得JSON數(shù)據(jù)集合后,我們需要對(duì)單條數(shù)據(jù)應(yīng)用計(jì)算屬性。在Vue.js 0.12之前的版本中,我們可以在v-repeat所在元素上使用v-component指令。代碼示例如下:

      <div id="items">         <p v-repeat="items" vue-component="item">             <button>{{fulltext}}</button>         </p>     </div>     var items = [         {number:1,text:'one'},         {number:2,text:'two'}     ]     var vue = new Vue({         el:'#items',         data:{             items:items         },         components:{             item:{                computed:{                     fulltext:function(){                         return 'item' +this.text                     }                 },              }         }     })

      在Vue.js 0.12版本中,Vue.js廢棄了v-component指令,所以我們需要使用自定義元素組件來(lái)實(shí)現(xiàn)在v-repeat中使用計(jì)算屬性。代碼示例如下:

      <div id="items">         <my-item v-repeat="items" inline-template>                      </my-item>     </div>     var items = [         {number:1,text:'one'},         {number:2,text:'two'}     ]     var vue = new Vue({         el:'#items',         data:{             items:items         },         components:{             'my-item':{                replace:true,                 computed:{                     fulltext:function(){                         return 'item' +this.text                     }                 },              }         }     })

      相關(guān)免費(fèi)學(xué)習(xí)推薦:js視頻教程

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)