首页 / VUE / Vue官方文档笔记(二)
Vue官方文档笔记(二)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Vue官方文档笔记(二),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2136字,纯文字阅读大概需要4分钟。
内容图文
23、$refs是什么东东?
通过在标签上设置ref属性,然后在Vue实例方法中可以通过$refs拿到这些标签,如:
<input ref="input">
methods: { focus: function () { // 拿到文本框标签,调用其获取焦点方法 this .$refs.input.focus() } }
24、对于多级嵌套组件,后代组件如何拿到父级或祖父级,设置更高级别的组件的数据或方法?
使用依赖注入。
provide: function () { return { getMap: this.getMap } }
然后在任何后代组件里,我们都可以使用inject 选项来接收指定的我们想要添加在这个实例上的属性:
inject: [‘getMap‘]
- 通过$on(eventName, eventHandler) 侦听一个事件
- 通过$once(eventName, eventHandler) 一次性侦听一个事件
- 通过$off(eventName, eventHandler) 停止侦听一个事件
先看一个示例:
mounted: function () { //Pikaday是一个第三方日期选择器的库。这里是将这个日期选择器附加到一个输入框上,最后挂载到DOM上var picker = new Pikaday({ field: this.$refs.input, format: ‘YYYY-MM-DD‘ }) //设置一次性的侦听事件,在组件销毁之前,销毁这个日期选择器this.$once(‘hook:beforeDestroy‘, function () { picker.destroy() }) }
mounted: function () { this.attachDatepicker(‘startDateInput‘) this.attachDatepicker(‘endDateInput‘) }, methods: { attachDatepicker: function (refName) { var picker = new Pikaday({ field: this.$refs[refName], format: ‘YYYY-MM-DD‘ }) this.$once(‘hook:beforeDestroy‘, function () { picker.destroy() }) } }
26、如果组件之间出现了互相引用,如何处理?
先看一个示例:
组件<tree-foler>的模板是这样的:
<p> <span>{{ folder.name }}</span> <tree-folder-contents :children="folder.children"/> </p>
另外一个组件<tree-folder-contents>的模板是这样的:
<ul> <li v-for="child in children"> <tree-folder v-if="child.children" :folder="child"/> <span v-else>{{ child.name }}</span> </li> </ul>
这两个组件互相引用,导致出现了循环引用。这种情况如何去解决呢?
假设这两个组件<tree-folder>是父组件,<tree-folder-contents>是子组件,则产生问题的是子组件<tree-folder-contents>, 因此我们在生命周期钩子beforeCreate里面去注册子组件
beforeCreate: function () { this.$options.components.TreeFolderContents = require(‘./tree-folder-contents.vue‘).default }
components: { TreeFolderContents: () => import(‘./tree-folder-contents.vue‘) }
这样问题就解决了。
原文:https://www.cnblogs.com/tandaxia/p/11627550.html
内容总结
以上是互联网集市为您收集整理的Vue官方文档笔记(二)全部内容,希望文章能够帮你解决Vue官方文档笔记(二)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。