javascript – 迁移到Vue 2.0 $on()没有听到$emit()
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 迁移到Vue 2.0 $on()没有听到$emit(),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1660字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 迁移到Vue 2.0 $on()没有听到$emit()](/upload/InfoBanner/zyjiaocheng/810/0877ad1d8e0b42f68fc70e6916f5d838.jpg)
背景:我正在从1.0迁移到2.0.
目前,我正在使用嵌套组件.父母和孩子之间的关系非常好.但是,父组件和主Vue()实例之间的关系被破坏.在计算属性中,Vue()实例中的cssstyle没有像我期望的那样基于$emit()/ $on()进行更新.
相关部分:
在HTML中使用父组件:
< f9-padding v-if =“editable”>< / f9-padding>
在父组件内
computed: {
cssstyle: function() {
var padding_style = this.padding();
bus.$emit('padding_changed', padding_style);
return padding_style;
}
}
在主Vue()实例内部
computed: {
cssstyle: function() {
console.log('cssstyle computed');
bus.$on('padding_changed', function (padding_style) {
return padding_style;
});
return 'padding: 0px;';
},
...
父内部的计算属性更新就好了.但是,主Vue()实例内的计算属性仅在页面加载时运行.我不明白如何从未使用< input>的父级发出数据.元件.我在网站上发现的大部分例子都只关注< input>案件.我只是计算了属性数据的变化.我尝试使用show here:http://rc.vuejs.org/guide/components.html#Custom-Events中的方法,但是我对此文档的关注是,它讨论的是组件之间的事件监听,而不是父组件和主Vue()实例.
更新:我能够通过将父项的计算属性更改为此来解决此问题:
computed: {
cssstyle: function() {
var padding_style = this.padding();
this.$root.cssstyle = padding_style;
return padding_style;
}
}
并将cssstyle从计算机移动到根Vue()实例中的数据.
data: {
cssstyle: 'padding: 0px;',
},
但是,我觉得使用时有点脏:
这一点.$root.cssstyle
没有其他办法吗?
解决方法:
对于事件发射和收听,请在2.0 docs中进行检查.
如果从自定义组件中发出:
cssstyle: function () {
/*...*/
this.$emit('onsomething', params)
}
然后,无论您在何处创建此组件的实例,都可以执行此类操作
<tamplate>
<custom-component @onsomething="action"></custom-component>
</tamplate>
然后在你的JS中:
methods: {
action: function (params) {
console.log('On something')
}
}
内容总结
以上是互联网集市为您收集整理的javascript – 迁移到Vue 2.0 $on()没有听到$emit()全部内容,希望文章能够帮你解决javascript – 迁移到Vue 2.0 $on()没有听到$emit()所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。