实例
el:实例
new Vue({
el: '#app'
})
// 实例与页面挂载点一一对应
// 一个页面中可以出现多个实例对应多个挂载点
// 实例只操作挂载点内部内容
data:数据
为插值表达式中变量提供数据
data中的数据可以通过vue实例直接或间接访问.
在new Vue ({})括号中设定的方法
method:方法
为v-on事件绑定事件
methods为事件提供方法
delimiters:分隔符
当vue的{{}}
与模板语法冲突时,可以设置更改
new Vue({
el: '#app',
data: {},
delimiters: ['[{', '}]'], // 修改插值表达式符号})
delimiters是个二元数组,第一个元素为左侧,第二个元素为右侧.
filter:过滤器
- 在filters成员中定义过滤器方法
- 可以对多个值进行过滤,过滤时还可以传入额外的辅助参数
- 过滤的结果可以再进行下一次过滤(可以进行过滤的串联)
<body>
<div id="app">
<!--
总结:
1、在filters成员中定义过滤器方法
2、可以对多个值进行过滤,过滤时还可以额外传入辅助参数
3、过滤的结果可以再进行下一次过滤(过滤的串联)
-->
<p>{{ num | f1 }}</p>
<p>{{ a, b | f2(30, 40) | f3 }}</p>
</div>
</body>
<script src="js/vue.js"></script>
<script>
new Vue({
el: '#app',
data: {
num: 10,
a: 10,
b: 20,
},
filters: {
// 传入所有要过滤的条件,返回值就是过滤的结果
f1 (num) {
console.log(num);
return num * 10;
},
f2 (a, b, c, d) {
console.log(a, b, c, d);
return a + b + c + d;
},
f3 (num) {
return num * num;
}
}
})
</script>
computed:计算
- computed计算属性可以声明 方法属性(该方法属性一定不能在data中声明,否则会报重复声明错误)
- 方法属性 必须在页面中渲染,才会启动绑定的方法(result),方法属性的值就是绑定方法(result)的返回值.
- 绑定的方法中出现的所有变量都会被监听,任何一个发生变化的值更新都会重新回调绑定方法,从而更新方法属性的值
- 一般用来解决:一个变量值依赖多个变量的问题
<body>
<div id="app">
<input type="number" min="0" max="100" v-model="n1">
+
<input type="number" min="0" max="100" v-model="n2">
=
<button>{{ result }}</button>
</div>
</body>
<script src="js/vue.js"></script>
<script>
new Vue({
el: '#app',
data: {
n1: '',
n2: '',
// result: 0,
},
/**
* 总结:
* 1、computed计算属性可以声明 方法属性(方法属性一定不能在data中重复声明)
* 2、方法属性 必须在页面中渲染,才会启用绑定的方法,方法属性的值就是绑定
* 方法的返回值
* 3、绑定的方法中出现的所有变量都会被监听,任何一个变化发生值更新都会
* 重新出发绑定方法,从而更新方法属性的值
*
* 一般用来解决的问题:一个变量值依赖于多个变量
*/
computed: {
result () {
console.log('被调用了');
n1 = +this.n1;
n2 = +this.n2;
return n1 + n2;
}
}
})
</script>
watch:监听
- 监听的属性需要在data中声明,监听方法不需要返回值
- 监听的方法名就是监听的属性名()
- 监听方法有两个回调函数:n:当前值;o:上一次的值
- 解决了:多个变量依赖于一个变量的问题
- 属性更新,方法被调用
<body>
<div id="app">
<p>姓名:<input type="text" v-model="full_name"></p>
<p>姓:{{ first_name }}</p>
<p>名:{{ last_name }}</p>
</div>
</body>
<script src="js/vue.js"></script>
<script>
new Vue({
el: '#app',
data: {
full_name: '',
first_name: '未知',
last_name: '未知',
},
watch: {
// n是监听的属性当前值,o是其上一次的值,监听的属性值每次更新都会回调监听方法
/**
* 总结:
* 1、监听的属性需要在data中声明,监听方法不需要返回值
* 2、监听的方法名就是监听的属性名,该属性值发生更新时就会回调监听方法
* 3、监听方法有两个回调参数:当前值,上一次值
*
* 解决的问题:多个变量值依赖于一个变量值
*/
full_name(n, o) {
name_arr = n.split('');
this.first_name = name_arr[0];
this.last_name = name_arr[1];
},
}
})
</script>
template:模板
根组件的模板是替换挂载点的模板
局部或全局组件的模板是替换挂载点的模板
props:
子组件可以通过props自定义组件属性(采用反射机制,需要填写字符串,但是使用时可以直接作为变量)
components:注册组件
局部子组件的注册使用,相当于创建一个临时占位符,程序运行后挂载点部分会被模板替换