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 13 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
Jul 09 Javascript
js弹出层永远居中实现思路及代码
Nov 29 Javascript
获取中文字符串的实际长度代码
Jun 05 Javascript
javascript 构造函数方式定义对象
Jan 02 Javascript
JavaScript中神奇的call()方法
Mar 12 Javascript
用js实现博客打赏功能
Oct 24 Javascript
js 获取今天以及过去日期
Apr 11 Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
Oct 19 Javascript
Vue.js划分组件的方法
Oct 29 Javascript
使用angularjs.foreach时return的问题解决
Sep 30 Javascript
浅谈Vue组件单元测试究竟测试什么
Feb 05 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+MSSQL分页的例子
2006/10/09 PHP
PHP Squid中可缓存的动态网页设计
2008/09/17 PHP
ThinkPHP Mobile使用方法简明教程
2014/06/18 PHP
php实现的mysqldb读写分离操作类示例
2017/02/07 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
javascript标签在页面中的位置探讨
2013/04/11 Javascript
JS判断表单输入是否为空(示例代码)
2013/12/23 Javascript
jQuery实现带渐显效果的人物多级关系图代码
2015/10/16 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
2016/05/03 Javascript
浅析jquery数组删除指定元素的方法:grep()
2016/05/19 Javascript
jqPlot jQuery绘图插件的使用
2016/06/18 Javascript
JS 实现Base64编码与解码实例详解
2016/11/07 Javascript
Web前端开发之水印、图片验证码
2016/11/27 Javascript
前端页面文件拖拽上传模块js代码示例
2017/05/19 Javascript
JS实现将链接生成二维码并转为图片的方法
2018/03/17 Javascript
vue.js 添加 fastclick的支持方法
2018/08/28 Javascript
小程序文字跑马灯效果
2018/12/28 Javascript
jQuery中使用validate插件校验表单功能
2019/05/24 jQuery
在Python中使用next()方法操作文件的教程
2015/05/24 Python
Python中多线程的创建及基本调用方法
2016/07/08 Python
Python mutiprocessing多线程池pool操作示例
2019/01/30 Python
Python神奇的内置函数locals的实例讲解
2019/02/22 Python
python实现飞机大战小游戏
2019/11/08 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
2019/11/15 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
T3官网:头发造型工具
2019/12/26 全球购物
adidas马来西亚官网:adidas MY
2020/09/12 全球购物
一套C#面试题
2013/10/09 面试题
计算机专业毕业生求职信分享
2013/12/24 职场文书
早会主持词
2014/03/17 职场文书
2014年加油站工作总结
2014/12/04 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
副校长2015年教育教学工作总结
2015/07/27 职场文书
2019年特色火锅店的创业计划书模板
2019/08/28 职场文书
使用JS前端技术实现静态图片局部流动效果
2022/08/05 Javascript