在 Vue.js 中,可以通過(guò)調(diào)用 Vue 實(shí)例中的方法實(shí)現(xiàn)組件間數(shù)據(jù)的傳遞,而 JS 腳本可以通過(guò)vm.$refs獲取到Vue實(shí)例,再通過(guò)調(diào)用實(shí)例中的方法來(lái)進(jìn)行傳參。
//JS var vm = this.$refs.vueInstance; vm.methodName(param1, param2, ...);
其中,vm.$refs.vueInstance中的vueInstance就是組件中定義的ref。而"methodName(param1, param2, ...)"則是要調(diào)用的vue實(shí)例中的方法,其中第一個(gè)參數(shù)(param1)就是要傳遞的數(shù)據(jù)。
在Vue組件中,可以通過(guò)props屬性來(lái)定義外部傳入的數(shù)據(jù)類型,也可以在methods中定義方法用于接收和處理這些數(shù)據(jù)。
//Vue組件 <template> <div> {{ message }} </div> </template> <script> export default { props: { message: String }, methods: { handleData(data) { //處理數(shù)據(jù) } } } </script>
在以上例子中,props“message”是接收外部傳參的屬性,methods“handleData”則是用于接收和處理數(shù)據(jù)的方法。在JS腳本中,可以通過(guò)調(diào)用Vue實(shí)例中的$emit方法向組件中發(fā)布數(shù)據(jù),從而實(shí)現(xiàn)向組件中傳參。
//JS var vm = this.$refs.vueInstance; vm.$emit('event_name', data);
在Vue組件中,可以通過(guò)父組件傳遞過(guò)來(lái)的props屬性獲取到JS傳遞的參數(shù)。
//Vue組件 <template> <div v-on:event_name="handleData"><div> </template> <script> export default { props: { message: String }, methods: { handleData(data) { //處理數(shù)據(jù) } } } </script>
在以上例子中,v-on:event_name="handleData"是用于監(jiān)聽JS傳遞過(guò)來(lái)的數(shù)據(jù),并調(diào)用handleData方法進(jìn)行處理的代碼。handleData方法中的參數(shù)data則是JS傳遞的數(shù)據(jù)。