我想知道如何处理dynamic components和events使用vue-js 2.3.
就说组件home $emit('eventFromHome')和组件archives $emit('eventFromArchives')
有什么方法可以抓住他们<component></component>?是否存在比临时解决方案更好/更好的方法?
var vm = new Vue({
el: '#example',
data: {
currentView: 'home'
},
components: {
home: { /* ... */ },
posts: { /* ... */ },
archive: { /* ... */ }
}
})
<component v-bind:is="currentView"></component>
Run Code Online (Sandbox Code Playgroud)
var vm = new Vue({
el: '#example',
data: {
currentView: 'home'
},
components: {
home: { /* ... */ },
posts: { /* ... */ },
archive: { /* ... */ }
}
})
<home v-on:eventFromHome=""></home>
<archive v-on:eventFromArchive=""></archive>
Run Code Online (Sandbox Code Playgroud)
<component
v-bind:is="currentView"
v-on:eventFromHome=""
v-on:eventFromArchive="">
</component>
Run Code Online (Sandbox Code Playgroud)
自 Vue.js 2.4 起,具有允许动态事件绑定的v-on对象语法。
这样,解决方案就更加优雅了:
var vm = new Vue({
el: '#example',
data: {
currentView: {
component: 'home',
events: {}, // <-- put listeners here
}
},
components: {
home: { /* ... */ },
posts: { /* ... */ },
archive: { /* ... */ }
}
})
<component v-bind:is="currentView.component" v-on="currentView.events"></component>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4324 次 |
| 最近记录: |