在 vue-electron 中,如何在父组件和子组件之间绑定数据?
In vue-electron, how to do you bind data between a parent and child components?
我正在尝试通过理解完成的代码来学习 electron-vue。
对于源代码,我使用的是 Eplee,这是一个用 vue js + electron 构建的 epub reader
这是 Eplee 的来源 link。
https://github.com/Janglee123/eplee
<!-- BookmarkMenu.vue -->
<template>
<el-popover :popper-class="`popper ${theme}`" width="350" trigger="hover">
<div class="el-popover__title">
Bookmarks
<el-button size="mini" icon="el-icon-plus" circle @click="addBookmark" />
</div>
<el-button slot="reference" size="small" icon="el-icon-collection-tag" circle />
<el-tree :data="bookmarks" node-key="id" @node-click="onNodeClick">
<span slot-scope="{ node }" class="custom-tree-node">
<span>{{ node.label }}</span>
<span>
<el-button type="text" icon="el-icon-close" @click="() => removeBookmark(node)" />
</span>
</span>
</el-tree>
</el-popover>
</template>
<script>
export default {
name: 'BookmarkMenu',
props:{
bookmarks:{
default:()=>{},
type: Array,
},
theme:{
default:'default',
type:String,
}
},
methods:{
addBookmark(){
this.$emit('add-bookmark');
},
removeBookmark(data){
this.$emit('remove-bookmark',data);
},
onNodeClick(data){
this.$emit('node-click',data);
}
}
}
</script>
<style lang="scss" scoped>
</style>
我不明白这里是如何绑定数据的。
例如,
<el-button size="mini" icon="el-icon-plus" circle @click="addBookmark" />
当有点击时
它触发BookmarkMenu.vue
的addBookmark
方法
addBookmark
方法触发父组件'add-bookmark'
但是,<el-button></el-button>
只是为了样式添加的class,而不是父组件。
对于 vue 和 react,我认为为了从不同的文件导入组件并正确放置它们,我需要放置两件事。
- 导入行
- 放置线
问题一:
这是正确的导入方式吗?还是只需要 1. import 行?
问题二:
那么,在vue-electron中,如何在父子组件之间绑定数据呢?
我假设文件结构会处理它
https://github.com/SimulatedGREG/electron-vue/blob/master/docs/en/renderer-process.md
Electron 只是您的网络应用程序的运行时。
看看 Vue.js 的事件模型。
https://vuejs.org/v2/guide/events.html
https://vuejs.org/v2/guide/components-custom-events.html
另外,查看组件指南 https://ru.vuejs.org/v2/guide/components.html
你的情况
<el-button></el-button>
is just a class added for the purpose of styling, not a parent component.
它不是父组件,它是 <BookmarkMenu>
组件的子组件。它里面可能包含任何东西。
并且 this.$emit('add-bookmark');
方法触发组件的事件侦听器(如果有),该组件将 <BookmarkMenu>
作为子组件。
例如<BookmarkMenu @add-bookmark="someHandlerInAComponentContainingBookmarkMenu"/>
我正在尝试通过理解完成的代码来学习 electron-vue。 对于源代码,我使用的是 Eplee,这是一个用 vue js + electron 构建的 epub reader 这是 Eplee 的来源 link。 https://github.com/Janglee123/eplee
<!-- BookmarkMenu.vue -->
<template>
<el-popover :popper-class="`popper ${theme}`" width="350" trigger="hover">
<div class="el-popover__title">
Bookmarks
<el-button size="mini" icon="el-icon-plus" circle @click="addBookmark" />
</div>
<el-button slot="reference" size="small" icon="el-icon-collection-tag" circle />
<el-tree :data="bookmarks" node-key="id" @node-click="onNodeClick">
<span slot-scope="{ node }" class="custom-tree-node">
<span>{{ node.label }}</span>
<span>
<el-button type="text" icon="el-icon-close" @click="() => removeBookmark(node)" />
</span>
</span>
</el-tree>
</el-popover>
</template>
<script>
export default {
name: 'BookmarkMenu',
props:{
bookmarks:{
default:()=>{},
type: Array,
},
theme:{
default:'default',
type:String,
}
},
methods:{
addBookmark(){
this.$emit('add-bookmark');
},
removeBookmark(data){
this.$emit('remove-bookmark',data);
},
onNodeClick(data){
this.$emit('node-click',data);
}
}
}
</script>
<style lang="scss" scoped>
</style>
我不明白这里是如何绑定数据的。
例如,
<el-button size="mini" icon="el-icon-plus" circle @click="addBookmark" />
当有点击时
它触发BookmarkMenu.vue
的addBookmark
方法触发父组件'add-bookmark'
addBookmark
方法
但是,<el-button></el-button>
只是为了样式添加的class,而不是父组件。
对于 vue 和 react,我认为为了从不同的文件导入组件并正确放置它们,我需要放置两件事。
- 导入行
- 放置线
问题一: 这是正确的导入方式吗?还是只需要 1. import 行?
问题二: 那么,在vue-electron中,如何在父子组件之间绑定数据呢?
我假设文件结构会处理它 https://github.com/SimulatedGREG/electron-vue/blob/master/docs/en/renderer-process.md
Electron 只是您的网络应用程序的运行时。
看看 Vue.js 的事件模型。
https://vuejs.org/v2/guide/events.html https://vuejs.org/v2/guide/components-custom-events.html
另外,查看组件指南 https://ru.vuejs.org/v2/guide/components.html
你的情况
<el-button></el-button>
is just a class added for the purpose of styling, not a parent component.
它不是父组件,它是 <BookmarkMenu>
组件的子组件。它里面可能包含任何东西。
并且 this.$emit('add-bookmark');
方法触发组件的事件侦听器(如果有),该组件将 <BookmarkMenu>
作为子组件。
例如<BookmarkMenu @add-bookmark="someHandlerInAComponentContainingBookmarkMenu"/>