vue.js通过自定义指令实现数据拉取更新的实现方法


Posted in Javascript onOctober 18, 2016

前言

这篇文章的代码片段位于 vue 的单文件组件中,即以 .vue 结尾的文件中,本文说明的只是一种实现方法,既不是唯一的方法也不是最好的方法,如果大家有更好的方法可以留言,大家进行讨论。

第一步

首先,一定要先定义变量:

// app.vue <script>

data () {  
  return {
   // 定义 getData
   getData:{},
   // 定义自定义指令的绑定值
   ifUpdate:true
  }
}

第二步

然后要使用 ajax 的话,要在 index.html 里引入 jquery,这样就可以全局使用了:

// index.html

<script type="text/javascript" src="./lib/js/jquery-2.1.1.min.js"></script>

第三步

接着使用自定义指令,在组件实例化后,会自动执行自定义指令里的方法:

组件实例化后会立即以初始值 ifUpdate 为参数第一次调用自定义指令 initData 的方法,之后每次参数值 ifUpdate 变化时会再次调用 initData 的函数,参数为 ifUpdate 的新值与旧值。

// app.vue <template>

// 在页面节点(自由选择)中绑定自定义指令
<div v-initData="ifUpdate" ></div>
// app.vue <script>

// 定义自定义指令
directives:{
  initData:function(val, oldVal){
   if(!val){
    return;
   }
   var self = this;
   $.getJSON( "ajax/test.json", function( data ) {
     self.vm.getData = data;
   });
   // 下次 ifUpdate 值更新为 true 时就会再次使用上面的 ajax 去获取数据
   self.vm.ifUpdate = false;
  }
}

使用场景说明

用户评论后,刷新评论列表:

     首次获取评论数据后,将 ifUpdate 改为 false

     用户添加评论后将数据传到后台,并将 ifUpdate 变为 true

     指令根据 ifUpdate 变化而触发,再次通过 ajax 从后台拉取数据

     拉取完再将 ifUpdate 重置为 false

总结

以上就是这篇文章的全部内容,希望本文的内容对大家学习或者使用vue.js能有所帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
两个SUBMIT按钮,如何区分处理
Aug 22 Javascript
jQuery操作cookie
Aug 08 Javascript
jquery validate表单验证插件
Sep 06 Javascript
浅谈jquery页面初始化的4种方式
Nov 27 Javascript
JavaScript中校验银行卡号的实现代码
Dec 19 Javascript
深入理解react-router@4.0 使用和源码解析
May 23 Javascript
浅谈关于axios和session的一些事
Jul 13 Javascript
vue动态路由实现多级嵌套面包屑的思路与方法
Aug 16 Javascript
JavaScript中EventLoop介绍
Jan 22 Javascript
详解如何在你的Vue项目配置vux
Jun 04 Javascript
基于vue+element实现全局loading过程详解
Jul 10 Javascript
Vue项目打包编译优化方案
Sep 16 Javascript
微信小程序 教程之WXML
Oct 18 #Javascript
原生JS实现匀速图片轮播动画
Oct 18 #Javascript
jquery对象和DOM对象的相互转换详解
Oct 18 #Javascript
原生js实现网易轮播图效果
Apr 10 #Javascript
浅谈bootstrap使用中的一些问题以及解决过程
Oct 18 #Javascript
JSON对象 详解及实例代码
Oct 18 #Javascript
简易的JS计算器实现代码
Oct 18 #Javascript
You might like
php类中的各种拦截器用法分析
2014/11/03 PHP
Laravel中间件实现原理详解
2016/10/09 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
FireFox JavaScript全局Event对象
2009/06/14 Javascript
jQuery Autocomplete自动完成插件
2010/07/17 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
2012/12/26 Javascript
Js实现滚动变色的文字效果
2014/06/16 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
Google Maps API地图应用示例分享
2014/10/23 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
javascript截取字符串小结
2015/04/28 Javascript
Bootstrap表格使用方法详解
2017/02/17 Javascript
ligerUI---ListBox(列表框可移动的实例)
2017/11/28 Javascript
webpack打包js的方法
2018/03/12 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
2018/03/29 Javascript
javascript使用substring实现的展开与收缩文字功能示例
2019/06/17 Javascript
element中el-container容器与div布局区分详解
2020/05/13 Javascript
基于javascript处理二进制图片流过程详解
2020/06/08 Javascript
Vue获取微博授权URL代码实例
2020/11/04 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
[01:51]历届DOTA2国际邀请赛举办地回顾 TI9落地上海
2018/08/26 DOTA
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
Python ljust rjust center输出
2008/09/06 Python
详细解析Python中的变量的数据类型
2015/05/13 Python
Python调用系统底层API播放wav文件的方法
2017/08/11 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
Python实现子类调用父类的初始化实例
2020/03/12 Python
python3 kubernetes api的使用示例
2021/01/12 Python
将世界上最美丽的摄影作品转化为艺术作品:Photos.com
2017/11/28 全球购物
港湾网络笔试题
2014/04/19 面试题
个人作风建设剖析材料
2014/10/11 职场文书
2014年少先队工作总结
2014/12/03 职场文书
道歉的话语大全
2015/05/12 职场文书
使用tensorflow 实现反向传播求导
2021/05/26 Python
Java elasticsearch安装以及部署教程
2021/06/28 Java/Android