关于Vue.js一些问题和思考学习笔记(2)
前言本文非vue教程,仅为学习vue过程中的个人理解与笔记,有说的不正确的地方欢迎指正讨论 1、computed计算属性函数中不能使用vm变量在计算属性的函数中,不能使用Vue构造函数返回的vm变量,因为此时vm还未返回,依然处于Vue内部构造函数过程中,遂只能使用this来代替vm。 若要使用 ,可使用以下方法来实现代码智能感知
使用$forceUpdate()
另:其他不能用vm变量,只能使用this变量的地方,都可以通过此方法来获得Typescript的智能感知和代码语法检查,比如 生命周期系列函数等。 不过模板里的vm引用Typescript无能为力,只能等待ts支持vue的jsx语法了╮(╯_╰)╭{{$children.length}}
![]() 注册父组件的mounted方法,执行$forceUpdate() {{$children.length}}
Vue.component("child",}); new Vue({ $children正确了: 解决方案2:使用vm的变量代替$children 注册父组件的mounted方法,将$children赋值给自定义的vm的变量。
同时模板中使用自定义的变量来代替默认的 {{child.length}}
Vue.component("child",}); var vm = new Vue({ 至于导致此问题的原因只能通过阅读vue2.0版本的源码才能了解了。 4、若父组件的template或render函数中无引用slot元素,则$children恒等于空数组此问题关联上面第3个问题。 触发此问题的前提:
//父组件 parent child:{{$children.length}} ",//模板中无slot元素mounted(){ this.$forceUpdate(); } }); Vue.component("child",{ template: " child "}); var vm = new Vue({ 解决方案1:父组件模板包含slot元素 在父组件的模板中加入slot元素。或在render函数中引用了this.$slots.default变量 parent child:{{$children.length}}
解决方案2:在父组件模板中编写子组件定义 此解决方案要修改此问题的复现第2要素,即子组件定义从调用方改为写到父组件的模板中也可解决此问题。 Vue.component("parent",{ parent child:{{$children.length}} 此方法虽然可以解决问题,但是有时我们直接把子组件写在调用方会更方便更利于理解,比如Tab与TabPage组件。 如下Tab组件代码,可能更符合一般人的使用思维: 相关笔记Vue学习笔记-1() Vue学习笔记-2() 本文已被整理到了《》,欢迎大家学习阅读。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
Vue.component("child",{
template: "
new Vue({
el: "#app",});