2016-12-29 92 views
0
<div v-for="item in imControls.messages" > 
    <p v-once> 
     <span class="" v-if="item.type==3">{{item.name}}:</span> 
     <span class="red" v-if="item.type==4">{{item.name}}:</span> 
     <span class="blue" v-if="item.type==2">{{item.name}}:</span> 
     <span class="grey" v-if="item.type==1">{{item.name}}:</span> 
     <span v-html="item.text"></span> 
    </p> 
</div> 

imControls.messages存在,如果我不p標籤上使用v-once,這是確定的,但如果我使用一次V,它無法找到項目。vue.js我在'v-for'語句中使用'v-once',爲什麼找不到'item'?

的錯誤是

'vue.js:2574 [Vue warn]: Property or method "item" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option. (found in root instance)

vue.js:2217 Uncaught TypeError: Cannot read property 'type' of undefined'

+0

你是異步加載'imControls.messages'嗎? – Saurabh

+0

是的,imControls.messages可以改變,但我希望imControls.messages中的每個項目在渲染後不需要改變。因爲在item.text中,它有一些img標籤字符串,我不想多次加載img資源。 –

回答

0

v-once指令可以在v-for直接使用

<div v-for="item in imControls.messages" v-once> 
    <span class="" v-if="item.type==3">{{item.name}}:</span> 
    <span class="red" v-if="item.type==4">{{item.name}}:</span> 
    <span class="blue" v-if="item.type==2">{{item.name}}:</span> 
    <span class="grey" v-if="item.type==1">{{item.name}}:</span> 
    <span v-html="item.text"></span> 
</div> 
0

不需要V-曾經在V-for語句,因爲它是固定在VUE。 js 2.0.8

4247修復了即使內容字符串保持不變也能重置內容的v-html

相關問題