当前位置: 首页 > news >正文

栾川网站开发微信小程序脚本

栾川网站开发,微信小程序脚本,wordpress 批量删除所有文章,wordpress技术博客主题Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue指令 目录 指令写法 自定义指令 简单封装指令 指令传递字符串 update事件 指令应用 指令实现轮播 指令函数简写 指令函数列表 bind inserted update componentUpdated unbind Vue3指令轮播 nextick 总结 指…

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue指令

 

目录

指令写法

自定义指令

简单封装指令

指令传递字符串

update事件

指令应用

指令实现轮播

指令函数简写

指令函数列表

bind

inserted

update

componentUpdated

unbind

Vue3指令轮播

nextick

总结


指令写法

指令:为了操作底层dom。

实际应用:可以通过指令知道什么时候dom创建完成,从而进行依赖dom的库初始化工作。

自定义指令

对普通dom元素进行底层操作。

编写一个输入框,当被绑定的元素插入到dom中时,

输入框获取焦点。

示例如下:

<div id="box"><input v-focus name="name" />
</div>
<script src="../lib/vue.js"></script>
<script>// 注册一个全局自定义指令 'v-focus'Vue.directive("focus", {// 当被绑定的元素插入到dom中时inserted:function(el) {// 聚焦元素el.focus()}})new Vue({el:"#box"})
</script>

 

简单封装指令

做一个简单的指令封装。

示例如下:

<div id="box"><div v-hello>你好 vue</div>
</div>
<script src="../lib/vue.js"></script>
<script>Vue.directive("hello", {// 指令的生命周期inserted(el) {console.log("inserted", el)el.style.background = "red"}})new Vue({el:"#box"})
</script>

 

指令传递字符串

如果在参数中不包含单引符号,则识别为状态,需要提前定义好。

示例如下:

<div id="box"><div v-hello=" 'yellow'">你好 vue</div><div v-hello=" 'blue'">你好 vue</div>
</div>
<script src="../lib/vue.js"></script>
<script>Vue.directive("hello", {// 指令的生命周期inserted(el, binging) {console.log("inserted", binging)el.style.background = binging.value}})new Vue({el:"#box"})
</script>

inserted事件,是在第一次插入到父节点时触发。

update事件

可以在update触发事件中修改值进行指令赋值。

示例如下:

<div id="box"><div v-hello=" 'yellow'">你好 vue</div><div v-hello=" 'blue'">你好 vue</div><div v-hello="whichColor">你好 vue</div>
</div>
<script src="../lib/vue.js"></script>
<script>Vue.directive("hello", {// 指令的生命周期inserted(el, binging) {console.log("inserted", binging)el.style.background = binging.value},update(el, binging) {console.log("update")el.style.background = binging.value}})let vm = new Vue({el:"#box",data : {whichColor: "red"}})
</script>

效果:

指令应用

指令实现轮播

使用指令来完成轮播。

因为不知道什么时候数据什么时候插入的,直接绑定一个指令。

给指令传递对象参数。

示例如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="../lib/swiper-bundle.css"><style>.swiper-container {width: 600px;height: 300px;}</style>
</head>
<body>
<div id="box"><header>导航</header><div class="swiper-container demo"><div class="swiper-wrapper"><div class="swiper-slide" v-for="(data, index) in datalist" :key="data" v-swiper="{index:index,length:datalist.length}"><img :src="data" alt=""/></div></div><!-- 如果需要分页器 --><div class="swiper-pagination"></div></div><footer>底部内容</footer>
</div>
<script src="../lib/swiper-bundle.js"></script>
<script src="../lib/vue.js"></script>
<script>Vue.directive("swiper", {// 指令的生命周期inserted(el, binging) {let {index,length} = binging.valueif (index === length - 1) {new Swiper(".demo", {// 如果需要分页器pagination: {el: '.swiper-pagination',},loop:true,autoplay: {delay: 2500,disableOnInteraction:false}})}}})new Vue({el: '#box',data: {datalist:[],},mounted() {// ajaxsetTimeout(()=> {this.datalist = ["https://tsj.youdubook.com/cover/book_cover_1372.jpg","https://tsj.youdubook.com/cover/book_cover_6.jpg","https://tsj.youdubook.com/cover/book_cover_265.jpg","https://tsj.youdubook.com/cover/book_cover_2819.jpg","https://tsj.youdubook.com/cover/book_cover_219.jpg"]}, 2000)}})
</script>
</body>
</html>

 

指令函数简写

这种方式,更新和创建都会触发,如果两种触发都是同样的处理可以使用简写方式。

示例如下:

Vue.directive("hello", ()=> {console.log("创建或者更新都会执行")
})

 

指令函数列表

bind

只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。

inserted

被绑定元素插入父节点时调用(仅保证父节点存在,但不一定已被插入文档中)。

update

所在组件的VNode更新时调用,但是可能发生在其子VNode更新之前。指令的值可以发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新。

componentUpdated

指令所在组件的VNode及其子VNode全部更新后调用。

unbind

只调用一次,指令与元素解绑时调用。

Vue3指令轮播

使用app.directive()定义指令

生命周期需要更换inserted更换为mounted

示例如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="../lib/swiper-bundle.css"><style>.swiper-container {width: 600px;height: 300px;}</style>
</head>
<body>
<div id="box"><header>导航</header><div class="swiper-container demo"><div class="swiper-wrapper"><div class="swiper-slide" v-for="(data, index) in datalist" :key="data" v-swiper="{index:index,length:datalist.length}"><img :src="data" alt=""/></div></div><!-- 如果需要分页器 --><div class="swiper-pagination"></div></div><footer>底部内容</footer>
</div>
<script src="../lib/swiper-bundle.js"></script>
<script src="../lib/vue.next.js"></script>
<script>let obj = {data() {return {datalist:[]}},mounted() {// ajaxsetTimeout(()=> {this.datalist = ["https://tsj.youdubook.com/cover/book_cover_1372.jpg","https://tsj.youdubook.com/cover/book_cover_6.jpg","https://tsj.youdubook.com/cover/book_cover_265.jpg","https://tsj.youdubook.com/cover/book_cover_2819.jpg","https://tsj.youdubook.com/cover/book_cover_219.jpg"]}, 2000)}}let app = Vue.createApp(obj)// app.component()// app.component()app.directive("swiper", {// 指令的生命周期mounted(el, binging) {let {index,length} = binging.valueif(index === length - 1) {new Swiper(".demo", {// 如果需要分页器pagination: {el: '.swiper-pagination',},loop:true,autoplay: {delay: 2500,disableOnInteraction:false}})}}})app.mount("#box")
</script>
</body>
</html>

 

nextick

当数据更新到dom中时,会触发一次性的监听事件。

示例如下:

let obj = {data() {return {datalist:[]}},mounted() {// ajaxsetTimeout(()=> {this.datalist = ["https://tsj.youdubook.com/cover/book_cover_1372.jpg","https://tsj.youdubook.com/cover/book_cover_6.jpg","https://tsj.youdubook.com/cover/book_cover_265.jpg","https://tsj.youdubook.com/cover/book_cover_2819.jpg","https://tsj.youdubook.com/cover/book_cover_219.jpg"]}, 2000)this.$nextTick(() => {console.log("比updated执行的都晚,而且只执行一次")})}
}

可以在tick中处理实例化,会在数据源更新后,触发一次实例化。

示例如下:

let obj = {data() {return {datalist:[]}},mounted() {// ajaxsetTimeout(()=> {this.datalist = ["https://tsj.youdubook.com/cover/book_cover_1372.jpg","https://tsj.youdubook.com/cover/book_cover_6.jpg","https://tsj.youdubook.com/cover/book_cover_265.jpg","https://tsj.youdubook.com/cover/book_cover_2819.jpg","https://tsj.youdubook.com/cover/book_cover_219.jpg"]}, 2000)this.$nextTick(() => {console.log("比updated执行的都晚,而且只执行一次")new Swiper(".demo", {// 如果需要分页器pagination: {el: '.swiper-pagination',},loop:true,autoplay: {delay: 2500,disableOnInteraction:false}})})}
}

总结

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue指令介绍及应用示例

http://www.dtcms.com/a/576532.html

相关文章:

  • 网站设计制作策划书韩国做 mp4下载网站
  • 网站建设客户调查需求表wordpress 5.0.2
  • 校园网二手书交易网站建设重庆介绍ppt制作
  • 湛江市建设教育协会学校网站wordpress视频教程百度网盘
  • 网站开发需要服务器吗做3d图的网站有哪些软件
  • 中国建设银行官方网站下载wordpress 自动分页
  • 课程平台网站建设报价岫岩洋河网站建设
  • 山东地产网站建设网站建设 招标任务书
  • 医院网站建设解决方案网站后台更新前台不显示
  • 关于做网站的策划书网络营销需要学什么
  • 可以免费做兼职的网站有哪些游戏门户网站建设
  • 家具公司网站模板网站规划与开发技术专业
  • 山东网站建设方案制作asp新闻发布网站模板下载
  • wordpress仿站软件大学科技园东区 做网站
  • 怎么做电子商务的网站推广做侵权网站用哪里的服务器
  • 小公司做网站需要注意什么问题我做夫人那些年网站登录
  • 中国建设银行报网站免费永久域名申请注册
  • 关于网站建设 策划文案在俄罗斯用钱让女性做h事情的网站
  • asp 网站路径泄露 解决黑色网站素材
  • 长沙市住房和城乡建设部网站wordpress 文章函数
  • 哪里可以做营销型网站城乡村建设规划许可证网站
  • 开源网站推广在线装修设计师咨询
  • 南昌住房城市建设支行官方网站成都大邑网站建设
  • 做游戏陪玩网站wordpress 上传 pdf
  • 做影视网站违法莫wordpress百度收录数
  • 福州企业高端网站建设制作哪家好微信公众平台应用开发
  • 网站建设完提交百度项目管理的软件有哪些
  • 自己做网站帮别人卖东西沈阳建网站平台
  • 外贸cms建站天津手机网站开发
  • 粉色做网站背景图片怎样做网站分流赚钱