第四节:VUE数据渲染指令
目录
$set
修改并渲染数据
v-pre
:跳过当前的样式,阻止指令的执行;
v-cloak
加载完成后再解析代码 当网络延迟是页面将渲染未解析的数据 如{{des}} v-cloak解决该问题
$delete
删除数组中某一个元素
directive
:注册指令 Vue中方法
filters
: 注册过滤器 钩子函数
component
注册全局组件 Vue中方法
components
注册局部组件 钩子函数
props:[]
传值
1、$set 修改并渲染数据
$set
修改数组值 修改data中参数数据等语法:
this.$set(this.arrays, index, value) this.$set(this.arrays, name, value)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<h1 v-html="about"></h1>
<p>{{author}}</p>
<ul>
<li v-for="items in arrays">{{items}}</li>
</ul>
<p>ID:{{user.id}} : name:{{user.name}}</p>
<input type="button" :value="'funcChangeArrays'" @click="funcChangeArrays">
<input type="button" :value="'funcChangeAutor'" @click="funcChangeAutor">
<input type="button" :value="'funcChangeUser'" @click="funcChangeUser">
</div>
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
<script>
new Vue({
el: '#app',
data () {
return {
about: '$set 修改数组值',
author: 'xiaoge',
arrays: ['张三', '李四', '王二', '麻子'],
user: { name: "xiaoge", id: 1 }
}
},
methods: {
funcChangeArrays: function () {
this.$set(this.arrays, 0, "二狗")
},
funcChangeAutor () {
this.$set(this.$data, 'author', "我呀!")
},
funcChangeUser () {
this.$set(this.user, 'name', "用户名")
}
}
})
</script>
</body>
</html>
2、v-pre :阻止代码解析
v-pre
:阻止代码解析 以原型显示到页面上语法:
<div v-pre></div>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<h1 v-html="about"></h1>
<p>{{author}}</p>
<!-- ul中循环将不被解析 将以原型显示到页面上 -->
<ul v-pre>
<li v-for="items in arrays">{{items}}</li>
</ul>
<p>ID:{{user.id}} : name:{{user.name}}</p>
</div>
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
<script>
new Vue({
el: '#app',
data () {
return {
about: '$set 修改数组值',
author: 'xiaoge',
arrays: ['张三', '李四', '王二', '麻子'],
user: { name: "xiaoge", id: 1 }
}
}
})
</script>
</body>
</html>
3、v-cloak 加载完后解析
v-cloak
加载完后解析 解决刷新页面时闪烁问题语法:
[v-cloak]{ display: none; }
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
[v-cloak] {
display: none;
}
</style>
</head>
<body>
<div id="app" v-cloak>
<h1 v-html="about"></h1>
<p>{{author}}</p>
<!-- ul中循环将不被解析 将以原型显示到页面上 -->
<ul>
<li v-for="items in arrays">{{items}}</li>
</ul>
<p>ID:{{user.id}} : name:{{user.name}}</p>
</div>
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
<script>
new Vue({
el: '#app',
data () {
return {
about: '$set 修改数组值',
author: 'xiaoge',
arrays: ['张三', '李四', '王二', '麻子'],
user: { name: "xiaoge", id: 1 }
}
}
})
</script>
</body>
</html>
4、$delete删除数组元素
$delete
删除数组元素语法:
this.$delete(this.arrays, index) [prame :(数组,下标)] this.$delete(this.user, name) [prame :(JSON对象,键值)]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<h1 v-html="about"></h1>
<p>{{author}}</p>
<ul>
<li v-for="items in arrays">{{items}}</li>
</ul>
<p>ID:{{user.id}} : name:{{user.name}}</p>
<input type="button" :value="'funcDelArrays'" @click="funcDelArrays">
<input type="button" :value="'funcDelUser'" @click="funcDelUser">
</div>
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
<script>
new Vue({
el: '#app',
data () {
return {
about: '$set 修改数组值',
author: 'xiaoge',
arrays: ['张三', '李四', '王二', '麻子'],
user: { name: "xiaoge", id: 1 }
}
},
methods: {
funcDelArrays: function () {
this.$delete(this.arrays, 0)
},
funcDelUser () {
this.$delete(this.user, 'name')
}
}
})
</script>
</body>
</html>
5、directive :注册指令
directive
注册指令 Vue中方法语法:
Vue.directive('name', function (el, bind) { })
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<h1 v-html="about"></h1>
<p v-author='author'></p>
<p v-name='user.id + user.name'></p>
</div>
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
<script>
Vue.directive('author', function (el, bind) {
console.log(el) // 文本对象
console.log(bind) // 对象信息
el.innerHTML = bind.value
el.style.color = 'green'
el.style.backgroundColor = 'yellow'
})
Vue.directive('name', function (el, bind) {
console.log(el) // 文本对象
console.log(bind) // 对象信息
el.innerHTML = bind.value
el.style.color = 'green'
el.style.backgroundColor = 'yellow'
})
new Vue({
el: '#app',
data () {
return {
about: 'directive :注册指令',
author: 'xiaoge',
user: {
id: 1,
name: "张三"
}
}
}
})
</script>
</body>
</html>
6、filters : 注册过滤器
filters
注册过滤器 钩子函数语法:
filters:钩子函数 创建过滤器 <p>{{author | myFilters}}</p> filters:{ myFilters( value ){ console.log( value ) // 返回处理后的数据 给指定的插值 return value.split("").reverse().join("") } }
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<h1>{{about}}</h1>
<p>{{author | myFilters}}</p>
<p>ID:{{user.id}} & name:{{user.name}}</p>
</div>
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
<script>
new Vue({
el: '#app',
data () {
return {
about: 'filters 注册过滤器',
author: 'xiaoge',
user: {
id: 1,
name: "张三"
}
}
},
filters: {
myFilters (value) {
console.log(value)
return value.split("").reverse().join("")
}
}
})
</script>
</body>
</html>