vue 的filters中 this指向的並不是vue實例,但想要獲取vue實例中data中的數據,可以在 beforeCreate中將vue實例賦值給定義的全局變量app,然后在filters中通過app代替this來獲取data中的數據。
<template> <div> <div v-for="(item,index) in list" :key="index"> <p>姓名{{item.name}}</p> <p>性別{{item.sex | sexFilter}}</p> </div> </div> </template> <script> let vueApp = null export default { name: 'UserFilters', data() { return { sexOption: [{ label: '男', value: 0 }, { label: '女', value: 1 }], list: [{ name: '張三', sex: 0 }, { name: '李四', sex: 1 }] } }, filters: { //性別過濾顯示 sexFilter(data) { let resultData = '' vueApp.sexOption.forEach(element => { if (element.value == data) { resultData = element.label } }); return resultData } } } </script> <style scoped> </style>
這個問題相信很多人都會遇到。