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实现在小方框中浏览大图的代码
Aug 14 Javascript
js null,undefined,字符串小结
Aug 21 Javascript
Jquery 的扩展方法总结
Oct 01 Javascript
javascript的字符串按引用复制和传递,按值来比较介绍与应用
Dec 28 Javascript
多种方法实现load加载完成后把图片一次性显示出来
Feb 19 Javascript
JS动态添加iframe的代码
Sep 14 Javascript
JS常用字符串方法(推荐)
Jan 15 Javascript
jQuery Easyui 下拉树组件combotree
Dec 16 Javascript
jQuery实现立体式数字动态增加(animate方法)
Dec 21 Javascript
基于Vue实现timepicker
Apr 25 Javascript
jquery拖动改变div大小
Jul 04 jQuery
JS实现的ajax和同源策略(实例讲解)
Dec 01 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
ThinkPHP采用模块和操作分析
2011/04/18 PHP
php设计模式 State (状态模式)
2011/06/26 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
php异常处理技术,顶级异常处理器
2012/06/13 PHP
PHP操作mysql数据库分表的方法
2016/06/09 PHP
33种Javascript 表格排序控件收集
2009/12/03 Javascript
jQuery实现的Email中的收件人效果(按del键删除)
2011/03/20 Javascript
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
jquery延迟加载外部js实现代码
2013/01/11 Javascript
jQuery实现的手机发送验证码倒计时效果代码分享
2015/08/24 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
jQuery中attr()与prop()函数用法实例详解(附用法区别)
2015/12/29 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
2016/09/04 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
2016/12/13 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
js获取地址栏参数的两种方法
2017/06/27 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
浅谈使用nodejs搭建web服务器的过程
2020/07/20 NodeJs
Python抓取Discuz!用户名脚本代码
2013/12/30 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
2018/01/24 Python
pandas基于时间序列的固定时间间隔求均值的方法
2019/07/04 Python
python实现简单银行管理系统
2019/10/25 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
AmazeUI 列表的实现示例
2020/08/17 HTML / CSS
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
自我鉴定范文300字
2013/10/01 职场文书
承认错误的检讨书
2014/01/30 职场文书
中学生自我评价范文
2014/02/08 职场文书
《匆匆》教学反思
2014/02/22 职场文书
导师工作推荐信范文
2014/05/17 职场文书
关于安全的广播稿
2014/10/23 职场文书
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL
python超详细实现完整学生成绩管理系统
2022/03/17 Python