2017-11-11 48 views
0

我產生了一堆UL的V型像這樣如何在黎使用事件處理程序生成的動態vuejs

<div v-for="item in info"> 
    <ul> 
    <li><a>{{item.number}}</a></li> 
    <li><a>{{item.alphabet}}</a></li> 
    </ul> 
</div> 

我有這樣

export default { 
     name: 'Zone', 
     data(){ 
      return{ 
      info:'[ 
    {'alphabet':'a','number':1}, 
    {'alphabet':'b','number':2}, 
    {'alphabet':'c','number':3} 
    ]' 

      } 
     }, 
    methods:{ 
    clicked:function(){ 
    console.log(this) 
     //console.log(this.value) 
     //console.log(this.text) 
    } 
} 
    } 

我想VUE組件在li被按下時獲取li元素的值。我嘗試過使用'this',但沒有幫助。我應該如何解決這個問題vueJS

回答

1

你可以嘗試將項目作爲參數傳遞給你的函數。事情是這樣的:

var vm = new Vue({ 
    el: '#app', 
    data: { 
    info: [{ 
     'alphabet': 'a', 
     'number': 1 
    }, { 
     'alphabet': 'b', 
     'number': 2 
    }, { 
     'alphabet': 'c', 
     'number': 3 
    }] 
    }, 
    methods: { 
    clicked: function(item) { 
     // `this` inside methods points to the Vue instance 
     console.log(item); 
    } 
    } 
}); 

和模板:

<div id="app"> 
    <ul> 
    <li v-for="item in info"> 
     <a v-on:click="clicked(item)">{{item.number}}</a> 
    </li> 
    </ul> 
</div> 

通知,這個clicked方法內指Vue的實例作爲評論指出。

結賬this fiddle

+0

謝謝,這工作 – Saikiran

1

您可以檢查。你只需要在你的ul

new Vue({ 
 
    el: '#app', 
 
    
 
data() { 
 
    return { 
 
     info: [ 
 
     {'alphabet':'a','number':1}, 
 
     {'alphabet':'b','number':2}, 
 
     {'alphabet':'c','number':3} 
 
     ] 
 
    } 
 
}, 
 
    
 
methods: { 
 
    clicked (e) { 
 
    let el = e.target.innerHTML 
 
     console.log('you clicked on ', el) 
 
    } 
 
} 
 
    
 
})
<script src="https://unpkg.com/[email protected]/dist/vue.js"></script> 
 
<div id="app"> 
 
<div v-for='item in info'> 
 
    <ul @click='clicked($event)'> 
 
    <li>{{ item.number }}</li> 
 
    <li>{{ item.alphabet }}</li> 
 
    </ul> 
 
</div> 
 
</div>

爵士小提琴上@click添加

1

new Vue({ 
 
    el: '#app', 
 
    data: { 
 
    items: [ 
 
     {id: 1, name: 'item1'}, 
 
     {id: 2, name: 'item2'}, 
 
     {id: 3, name: 'item3'}, 
 
     {id: 4, name: 'item4'}, 
 
     {id: 5, name: 'item5'} 
 
    ] 
 
    }, 
 
    methods: { 
 
    showInfo (e) { 
 
     console.log('ID: ' + e.target.getAttribute('id')) 
 
     console.log('Content: ' + e.target.textContent) 
 
    } 
 
    } 
 
})
li { 
 
    border: 1px solid black; 
 
}
<div id="app"> 
 
    <ul> 
 
    <li 
 
     v-for="item in items" 
 
     :key="item.id" 
 
     :id="item.id" 
 
     @click="showInfo"> 
 
     {{ item.id }} - {{ item.name }} 
 
    </li> 
 
    </ul> 
 
</div> 
 

 
<script src="https://unpkg.com/[email protected]/dist/vue.min.js"></script>

相關問題