You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
data内定义的属性将会转换为getter与setter,从而让 data内定义的属性能够响应数据变化;需要注意的是在组件实例之前在data内定义的对象才会被转换为getter与setter属性,才会实现响应式变化,组件内定义的是不会转换为getter与setter;data为什么是一个函数而不是一个对象是因为组件可能被用来创建多个实例(即被不同的父组件引用)。如果 data 仍然是一个纯粹的对象,则所有的实例将共享引用同一个数据对象!通过提供 data 函数,每次创建一个新实例后,我们能够调用 data 函数,从而返回初始数据的一个全新副本数据对象。
computed计算属性的结果会被缓存,除非依赖的响应式属性(如data内定义的属性,props内传入的属性)变化才会重新计算。注意,如果实例范畴之外的依赖 (比如非响应式的 not reactive) 是不会触发计算属性更新的。它的初衷是帮助我们简化一些操作(与methods比)与节约一些性能(与watch比),计算属性默认只有getter,即获取计算属性值的方法,也可以定义setter方法,用来设置计算属性的值,在计算属性被重新赋值时进行调用,一般用来设置的当这个计算属性进行改变时,需要进行的一些操作所以在使用的时候只要考虑当前变量是否需要依赖某个项记性改变,还是说需要通过外部操作来进行改变,还是不需要改变来进行判断变量是定义成data属性内的变量还是,computed内的属性
在main.js里面注册store的时候,s不能大些,大些的话会无效,导致在组件里面使用mutations or actions无效,即注册的时候只能使用store,不能使用Store
在router配置文件里面,当配置子路由的时候,子路由的path前面是不需要带/的,/值需要在一级路由前面带上,因为在vue-router里面,把/开头的嵌套路径当做根路径;
jquery的ajax的post请求默认为表单请求即请求头的content-type:application/x-www-form-urlencoded(简单的ajax请求,跨域请求的时候不会发起预请求),angular1.x版本的$http内的post请求默认为json格式的请求,即请求头为content-type:application/json(复杂的ajax请求,跨域请求时会发起预请求),vue的辅助插件axios的post请求,默认为json请求即请求头为content-type: application/json
v-bind:href的简写:href;v-on:click的简写为@click,即自定义事件在父组件可以通过@自定义事件名or v-on自定义事件名来监听
computed内的计算属性只能够动态获取简单类型值得变化,引用类型的值如果第一次是空,可以获取到最新值,如果不是空则获取不到,这个时候需要用watch来监听对象属性的变化
props只能用于父子之间传递数据不能再祖孙组件之间进行传值,如果祖孙之间需要传至需要一层层的传递;
this.$emit子组件向父组件传递值时,只能够通知到父组件,不能通知到祖组件,如果需要传递到祖组件则需要一层一层的传递;
slot插槽的作用,插槽的作用是帮助我们向某个组件内插入不同的指定内容,通过name属性来指定内容需要被插入的插槽位置,注意插槽还可以传递作用域即可以把组件内的值通过作用域传给插槽,然后插槽内就可以使用传入的作用域内的值,需要注意的是事件不能够通过作用域传递;2.5之前的版本,带作用域的slot需要放再template内,2.5之后不再需要
computed计算属性,data内定义的属性二者之间有什么区别
v-model详解 vue内v-model的实现方式是:value="txt" @input="txt = $event.target.value"这两段代码实现的
vue及angular等框架,核心思想数用数据来进行驱动,而不是dom来进行驱动,所以我们在做全选与反选时包括类似的操作应该使用数据来进行驱动而不是dom来驱动,这里需要利用data属性的双向绑定与computed属性的依赖变化
先在data里面定义一个checkList: []
在计算属性内获取到从父组件传入的v-for的列表数据内对checkList进行赋值操作,使用isChecked属性来绑定每个checkbox
在计算属性内定义当前被选中的计算属性selectCount,通过遍历,通过isChecked属性来筛选
计算属性内定义全选属性selectAll 通过get与set方法来进行全选与全不选操作,全选实现的思路是通过被选中数量计算属性与渲染当前列表的数据长度是否相等来进行判断,全不选是通过遍历及isChecked来进行设置
计算属性内定义获取当前被选中的元素数组checkedGroup,遍历,isChecked来进行判断
nextTick,将回调延迟到下次 DOM 更新循环之后执行。在修改数据之后立即使用它,然后等待 DOM 更新;这里有两个概念,一个是响应式原理,一个是异步更新队列
制作一个分页器的核心在两个部分,第一个就是分页器页码的生成规则,第二点就是数据总数,每页展示的条数,及当前页码这是三个关键数字;而分页器的难点就在分页器码的生成规则,需要直接好好的去总结下分页器页码的生成规则
在将 v-bind 用于 class 和 style 时,表达式结果的类型除了字符串之外,还可以是对象或数组。注意的是在组件上也是可以直接使用的,class会被添加到定义组件时的最外层元素上
v-if or v-for使用的时候可以用一个template来包裹需要操作的标签,这里的template不会被渲染出来,只是其它一个方便操作的作用,v-show的时候不能使用template标签
注意在prop进行传值时,因为HTML 特性是不区分大小写的。所以,当使用的不是字符串模板(如.html后缀的文件,字符串模板指的时.vueor其它后缀结尾的文件)时,camelCase (驼峰式命名) 的 prop 需要转换为相对应的 kebab-case (短横线分隔式命名): 而不是,所以便于将.vue后缀的文件改成.html后缀文件不出现报错的话,建议都写成kebab-case (短横线分隔式命名)
为了保证数据的单向流即父组件数据更新时,子组件对应的数据也会更新,而子组件内的数据更新时,不会影响到数据内的属性,因为JavaScript 中对象和数组是引用类型,指向同一个内存空间,如果 prop 是一个对象或数组,在子组件内部改变它会影响父组件的状态。所以为了避免这种情况的
出现最好的方法就是在子组件的data内声明一个新的变量来进行接收,or在计算属性内得到一个新的值
注意 prop 会在组件实例创建之前进行校验,所以在 default 或 validator 函数里,诸如 data、computed 或 methods 等实例属性or方法还无法使用
组件上的.sync 修饰符,改修饰符的作用是实现父组件内的某个变量与组件内的某个变量进行双向绑定,需要注意的是需要在子组件显示的触发this.$emit('update:foo', newValue)
单元素or组件的过渡即需要使用到动画,需要用到transition,只要给transition添加一个name,然后就可以根据这个name来定义动画了,过渡的类名总共6个,这里的v可以使用transition上的name来替换如fade-enter fade-enter-to
混合也就是提取出公共的数据or方法,然后混合到需要的组件内,or在全局对象上进行混合操作,添加到每个组件上,需要注意的就是一个覆盖原则,如同名钩子函数,混合之后会变成一个数组且混合对象的 钩子将在组件自身钩子 之前 调用;如methods, components 和 directives将被混合为同一个对象。两个对象键名冲突时,取组件对象的键值对;全局混合一旦使用全局混合对象,将会影响到 所有 之后创建的 Vue 实例
The text was updated successfully, but these errors were encountered: