拾光°
语法:{{要插入的值}},此时相当于占位符,到时候{{关键字}}会被替换成Model中的数据
bug点:
当网速较慢时,Vue初始化未完成时,插值表达式不能被解析,会直接显示
出来,加载完毕之后又会被替换成真实结果,造成闪烁(Vue的加载代码写在
HTML元素之后时会出现该bug)
语法:把它当作HTML元素的一个属性使用
示例:
{{msg1}}特点:
当Vue加载完毕后,v-cloak属性会自动消失
使用:
添加如下CSS样式:让所有带v-cloak属性的元素隐藏,Vue加载完成后显示
实现,解决插值表达式闪烁的问题
[v-cloak]{
display: none;
}语法:
<p v-text="msg"></p>作用:和插值表达式一样,用于给HTML元素添加文本
区别:
和v-text的唯一区别:给HTML添加内容时会解析内容中的HTML
可能有安全问题, 一般只在可信任内容上使用 v-html,永不 用在用户提交的内容上(xss攻击)
它与v-text区别在于v-text输出的是纯文本,浏览器不会对其再进行html解析,但v-html会将其当html标签解析后输出。
语法:
<span v-pre>{{ this will not be compiled }}</span>
<!-- 结果就是 {{ this will not be compiled }} -->注意:
语法:在HTML元素的属性目前加上绑定标识,此时HTML的该属性的值就会根据属性值的名字从Model中获取数据
注意:
语法:在HTML的事件属性(不带on)前加上绑定标识,此时HTML触发此事件时,会执行事件中绑定的代码
示例:
点击下显示你好
<button @click=“sayHello(可以传参数)”>点击下显示你好注意:
语法:
<div v-once>{{info}}</div>注意:
语法:
<div id="app">
<div>{{msg}}</div>
<div>
<!-- 当输入框中内容改变的时候, 页面上的msg 会自动更新 -->
<input type="text" v-model='msg'>
</div>
</div>
<script type="text/javascript">
/*
双向数据绑定
1、从页面到数据
2、从数据到页面
*/
var vm = new Vue({
el: '#app',
data: {
msg: 'Hello Vue'
}
});
</script>
注意:
指令通过改变元素的 css 属性(display)来决定元素是显示还是隐藏
语法:
<span v-if="flag">
如果flag为true则显示,false不显示!
</span>
<script>
var vm = new Vue({
el:"#app",
data:{
flag:true
}
})
</script>使用场景:
可以循环 数组、对象、数字
v-for循环对象数组
<body>
<div id="app">
<p v-for="(user,index) in list">{{user.id}}---{{user.name}}-----索引:{{index}}</p>
</div>
<script>
var app = new Vue({
el:"#app",
data:{
list:[
{id:1,name:'beixi'},
{id:2,name:'jzj'},
{id:3,name:'贾志杰'}
],
}
});
</script>
</body>v-for 循环对象
<body>
<div id="app">
<p v-for="(val,key,index) in user">值:{{val}}---键:{{key}}-----索引:{{index}}</p>
</div>
<script>
var app = new Vue({
el:"#app",
data:{
user:{
name:"beixi",
age:"18",
sex:"男"
}
}
});
</script>
</body>v-for 循环数字
<body>
<div id="app">
<p v-for="count in 5">这是第{{count}}次循环</p>
</div>
<script>
var app = new Vue({
el:"#app",
data:{ }
});
</script>
</body>
内置指令不能满足我们特殊的需求
Vue允许我们自定义指令
Vue.directive 注册全局指令
// 注册一个全局自定义指令 `v-focus`
Vue.directive('focus', {
// 当被绑定的元素插入到 DOM 中时……
inserted: function (el,binding) {
// 当前指令绑定的dom元素
//console.log(el);
// 指令传入的参数、修饰符、值 v-指令名称:参数.修饰符=值
// console.log(binding)
// 聚焦元素
el.focus()
}
})directives: 注册局部指令:
directives: {
focus: {
// 指令的定义
inserted: function (el) {
el.focus()
}
}
}使用:直接在元素上面使用v-focus即可
<input type="text" v-focus/>带属性的 (bind 和 inserted )
bind 方法:
绑定当前指令的元素,在内存中被创建的时候就会被立即调用;指令所绑定到的元素,还没有被插入父节点中;
推荐把样式相关的设置,都定义在 bind 方法中;
inserted 方法:
绑定当前指令的元素,被插入到DOM树之后才会被调用; 当指令所绑定到的元素,被插入到文档中的父节点时候,会立即触发 inserted 方法
推荐把行为相关的设置,都定义在 inserted 方法中;
