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 调试器简介
Feb 21 Javascript
Javascript 遮罩层和加载效果代码
Aug 01 Javascript
JS删除字符串中重复字符方法
Mar 09 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
Mar 27 Javascript
jQuery CSS()方法改变现有的CSS样式
Aug 20 Javascript
jquery获得同源iframe内body下标签的值的方法
Sep 25 Javascript
js 性能优化之快速响应的用户界面
Feb 15 Javascript
Angular 容器部署的方法
Apr 17 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
Apr 16 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
Jul 29 Javascript
Vue.js watch监视属性知识点总结
Nov 11 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
Jan 07 Vue.js
微信小程序 教程之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的一个登录的类 [推荐]
2007/03/16 PHP
PHP 飞信好友免费短信API接口开源版
2010/07/22 PHP
PHP读取XML值的代码(推荐)
2011/01/01 PHP
仿Aspnetpager的一个PHP分页类代码 附源码下载
2012/10/08 PHP
Zend Framework实现自定义过滤器的方法
2016/12/09 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
javascript concat数组累加 示例
2009/09/03 Javascript
客户端限制只能上传jpg格式图片的js代码
2010/12/09 Javascript
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
2011/07/26 Javascript
jquery 实现密码框的显示与隐藏示例代码
2013/09/18 Javascript
js实现全屏漂浮广告移入光标停止移动
2013/12/02 Javascript
jQuery自动添加表单项的方法
2015/07/13 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
jQuery基本过滤选择器用法示例
2016/09/09 Javascript
JS判断浏览器是否安装flash插件的简单方法
2016/09/13 Javascript
BootStrap tooltip提示框使用小结
2016/10/26 Javascript
vue.js实现的幻灯片功能示例
2019/01/18 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
对Python2与Python3中__bool__方法的差异详解
2018/11/01 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
2019/06/21 Python
分享PyCharm的几个使用技巧
2019/11/10 Python
python读取tif图片时保留其16bit的编码格式实例
2020/01/13 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
在线购买世界上最好的酒:BoozeBud
2018/06/07 全球购物
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
解释一下ArrayList Vector和LinkedList的实现和区别
2013/04/26 面试题
介绍一下游标
2012/01/10 面试题
销售业务实习自我鉴定
2013/09/23 职场文书
法律服务所工作总结
2015/08/10 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书
Mysql文件存储图文详解
2021/06/01 MySQL
Ajax 的初步实现(使用vscode+node.js+express框架)
2021/06/18 Javascript