学习vue, 记录笔记
代码放在:vue-learn
循环遍历 data中 list 的数据
绑定事件, 放在methods 内
todoList 中在按钮中绑定提交事件
简写: v-on:click => @click
数据的双向绑定
输入框数据发生变化, 则data中数据也发送变化. data 中定义变量发送变化则页面数据也跟着变
v-model.lazy : 懒惰加载,当鼠标移出输入框后才加载 v-model.number : 数字加载,只有输入的是数字才加载,字符串不加载 v-model.trim : 去除空格
向组件传入绑定值,
props 组件接受那些值
简写: v-bind:index => :index
条件判断语句
判断语句, 必须紧跟 v-if, 中间不能插入其他元素
判断语句, 必须紧跟 v-if, 中间不能插入其他元素
将值输出成文本
将值输出成html
输出元素,不会移除dom, 经常控制界面元素显示和影藏
v-show 会渲染到页面,只是display: none;
不支持<template></template>属性
将组件放到内存中,不会每次去销毁,提高性能
主要面向DOM进行操作
View <=> Presenter <=> Model
View : 视图 Presenter : 控制器, 大量的DOM操作
View <=> ViewModel <=> Model
ViewModel : DOM Listeners , Data Bindings. Vue 内置的, 我们并不需要关注
主要面向数据进行操作
可以将页面进行切分, 组件就是界面中的一小块。
父组件使用v-bind 向子组件传值,子组件使用 this.$emit 向父组件触发事件,父组件监听这个时间, 并接受事件的参数
全局变量: app.$data.xx
以$开头的都是这个实例的实例属性和实例方法
app.$destroy() //将这个实例销毁,销毁后再修改值,页面不会发送变化
生命周期函数就是vue实例在某个时间点自动执行的函数
这3个内容之中都可以写js 表达式
v-bind:class
v-bind:[classA, classB]
<div class="static" v-bind:class="{class-a:isA, class-b:isB}"></div> data : { isA: true, isB: false, } => 结果 <div class="static class-a" ></div>
<div v-bind:class="classObject" ></div> data : { calssObject :{ 'class-a': true, 'class-b': false, } }
v-bind:style="xx"
v-bind:[styleObjectA, styleObjectB]
给元素加 key="xx" vue就会认为是页面中唯一的元素,如果key不同就不会复用
<div v-if="show"> 用户名: <input> </div> <div v-else> 邮箱名: <input> </div>
加key 不会复用
<div v-if="show"> 用户名: <input key="username" /> </div> <div v-else> 邮箱名: <input key="mail" /> </div>
<div v-for="(item, index) of list" :key="item.id"> {{item}} -- {{index}} </div>
性能高: key值唯一,不是用index
我们操作数组的时候,不能使用下标的方式,
app.list = [{新数据}]
Vue.set(app.list, 1, 5) app.$set(app.list, 1, 5)
模版占位符, 包裹一些元素,并不会被渲染
<template v-for="(item, index) of list" :key="item.id"> <div>{{item}} -- {{index}}</div> <span>xxx</span> </template>
<div v-for="(item, key, index) of userInfo"> <div>{{item}} -- {{key}} -- {{index}} </div> </div>
//全局方法 Vue.set(app.userInfo, "address", "beijin") //实例方法 app.$set(app.userInfo, "address", "beijin")
使用is 解决h5中 标签规范 的bug, 包含后页面展现错误
<select> <option is="row"></option> </select> Vue.component("row", { template : "<tr><td>this is a row</td></tr>", })
Vue.component("row", { data : function () { return { content : "this is a row" } }, template : "<tr><td>{{content}}</td></tr>", })
使用 ref 定义引用名称
<div ref="hello" @click="handleClick"> hello world</div> var app = new Vue({ el: "#app", methods : { handleClick : function () { console.log( this.$refs.hello.innerHTML ) } }, })
父组件
<counter :count="0"></counter>
子组件 使用props 接受父组件传递的参数
var counter = { template: '<div>{{count}}</div>', props : ["count"], }
单项数据流:子组件不能反过来修改父组件的值, 只能拷贝后修改自己的值
当子组件显示依赖父组件传递dom 进行展现的时候,使用插槽
使用该标签实现动画效果, 过渡动画效果。
原理:在一定时间在组件上加css
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句