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 相关文章推荐
关于javascript document.createDocumentFragment()
Apr 04 Javascript
javascript(jquery)利用函数修改全局变量的代码
Nov 02 Javascript
页面中iframe相互传值传参
Dec 13 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
Dec 02 Javascript
JavaScript判断变量是否为数组的方法(Array)
Feb 24 Javascript
jQuery Dialog 取消右上角删除按钮事件
Sep 07 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
Dec 27 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
Nov 09 jQuery
JavaScript数据结构之栈实例用法
Jan 18 Javascript
javascript头像上传代码实例
Sep 28 Javascript
javascript History对象原理解析
Feb 17 Javascript
你不知道的SpringBoot与Vue部署解决方案
Nov 09 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 实例化类的一点摘记
2008/03/23 PHP
PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解
2013/04/26 PHP
PHP中source #N问题的解决方法
2014/01/27 PHP
PHP7+Nginx的配置与安装教程详解
2016/05/10 PHP
php简单生成一组与多组随机字符串的方法
2017/05/09 PHP
用js实现的抽象CSS圆角效果!!
2007/05/03 Javascript
jquery实现table鼠标经过变色代码
2013/09/25 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
2014/05/20 Javascript
jQuery实现页面滚动时动态加载内容的方法
2015/03/20 Javascript
JavaScript实现的类字典插入或更新方法实例
2015/07/10 Javascript
JavaScript实现带缓冲效果的随屏滚动漂浮广告代码
2015/11/06 Javascript
jquery实现倒计时效果
2015/12/14 Javascript
JavaScript通过代码调用Flash显示的方法
2016/02/02 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
2016/04/23 Javascript
js实现图片淡入淡出切换简易效果
2016/08/22 Javascript
canvas实现钟表效果
2017/02/13 Javascript
使用validate.js实现表单数据提交前的验证方法
2018/09/04 Javascript
js拖动滑块和点击水波纹效果实例代码
2018/10/16 Javascript
微信小程序之swiper滑动面板用法示例
2018/12/04 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
2019/01/21 Javascript
angular2 NgModel模块的具体使用方法
2019/04/10 Javascript
[03:08]Ti4观战指南上
2014/07/07 DOTA
比较详细Python正则表达式操作指南(re使用)
2008/09/06 Python
python求众数问题实例
2014/09/26 Python
python编程线性回归代码示例
2017/12/07 Python
python3 简单实现组合设计模式
2020/07/02 Python
CSS3 3D制作实战案例分析
2016/09/18 HTML / CSS
购买200个世界上最好的内衣品牌:Bare Necessities
2017/02/11 全球购物
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
完美实现CSS垂直居中的11种方法
2021/03/27 HTML / CSS
市场营销专业个人求职信范文
2013/12/14 职场文书
生产车间班组长岗位职责
2014/01/06 职场文书
高中运动会入场词
2014/02/14 职场文书
党校毕业个人总结
2015/02/28 职场文书
入党介绍人考察意见
2015/06/01 职场文书
TV动画《八十龟酱观察日记》第四季宣传PV公布
2022/04/06 日漫