- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在一个使用 vue.js 2 的项目中:
我有一个组件存在于代表元素列表的 .vue 文件中。另外,我有一个侧边栏是此列表的摘要。这个侧边栏是 .vue 文件中的另一个组件。
那么,我如何保持它们之间的通信,例如,如果我从列表中删除了一个元素,则反射(reflect)在边栏中声明的 var 中的变化,即元素总数?举例说明:
SideBar.vue
<template>
...
<span></span> ===> here I need total of elements listed in ListElements.vue
...
<template>
ListElements.vue
<template>
...
@click="deleteEntry"
...
<template>
<script>
methods: {
deleteEntry(entry) {
//here I need to notify to SideBar.vue in order to update the total of elements in the this.entries list.
let index = this.entries.indexOf(entry);
if (window.confirm('Are you sure you want to delete this time entry?')) {
this.entries.splice(index, 1);
}
}
</script>
最佳答案
好的,我创建了一个简化示例来说明其工作原理。您的总线需要是全局的,以便所有 Vue
组件都可以访问它,这只是意味着将它放在所有其他组件和 View 模型之外:
var bus = new Vue({});
var vm = new Vue({
// Main view model has access to bus
el: '#app'
});
然后你只需要在总线上发出某个事件的事件并在另一个组件中捕获它:
组件一在 keyup 时向总线发送消息:
Vue.component('component-one', {
template: '<div>Enter a message: <input v-model="msg" v-on:keyup="updateMessage"> </div>',
methods: {
updateMessage() {
bus.$emit('msg', this.msg);
}
},
data() {
return {
msg: ""
}
}
});
组件二监听消息:
Vue.component('component-two', {
template: "<div><b>Component one says: {{ msg }}</b></div>",
created() {
bus.$on('msg', (msg) => {
this.msg = msg;
});
},
data() {
return {
msg: ""
}
}
});
这是 fiddle :https://jsfiddle.net/v7o6d2vL/
为了让您的单页组件访问总线,您只需要确保您的总线在全局范围内,您可以使用 window
来做到这一点:
window.bus = new Vue({});
然后您可以像往常一样在您的组件中使用 bus.$emit()
和 bus.$on()
关于javascript - 如何传达两个单独的 .vue 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40488872/
当我们的Infinispan集群(版本9.4.8.Final)出现异常时,出现异常的节点会将此信息发送给集群中的其他节点。这似乎是设计使然。 此事件可能会导致流量过大,从而导致超时异常,进而使节点想要
就我对 Redux 的理解而言,它是关于将 UI 的所有状态保存在一个存储中(以便能够轻松地重现某些状态并且没有副作用)。您可以通过触发 reducer 的触发操作来操纵状态。 我目前正在编写一个类似
如果我使用 QtConcurrent::run 启动一些异步执行函数,并使用 QFutureWatcher 监控返回的 future ,如果我可以在异步执行函数中做些什么来传达一些进度文本,这将导致
我是一名优秀的程序员,十分优秀!