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 相关文章推荐
js文字滚动停顿效果代码
Jun 28 Javascript
关于setInterval、setTimeout在jQuery中的使用注意事项
Sep 28 Javascript
Jquery 模拟用户点击超链接或者按钮的方法
Oct 25 Javascript
jQuery使用之标记元素属性用法实例
Jan 19 Javascript
javascript实现数独解法
Mar 14 Javascript
js实时获取窗口大小变化的实例代码
Nov 18 Javascript
基于jquery日历价格、库存等设置插件
Jul 05 jQuery
详解如何在nuxt中添加proxyTable代理
Aug 10 Javascript
使用webpack打包后的vue项目如何正确运行(express)
Oct 26 Javascript
原生JS检测CSS3动画是否结束的方法详解
Jan 27 Javascript
微信小程序swiper禁止用户手动滑动代码实例
Aug 23 Javascript
Ant Design的Table组件去除
Oct 24 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 向访客和爬虫显示不同的内容
2009/11/09 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
使用PHP如何实现高效安全的ftp服务器(一)
2015/12/20 PHP
php中array_unshift()修改数组key注意事项分析
2016/05/16 PHP
php将服务端的文件读出来显示在web页面实例
2016/10/31 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
JS 添加千分位与去掉千分位的示例
2013/07/11 Javascript
Javascript连接多个数组不用concat来解决
2014/03/24 Javascript
jQuery实现简单的文件上传进度条效果
2020/03/26 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
Bootstrap模态框禁用空白处点击关闭
2016/10/20 Javascript
详解微信小程序开发之城市选择器 城市切换
2017/01/17 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
vue axios 表单提交上传图片的实例
2018/03/16 Javascript
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
2021/02/08 Javascript
[53:29]完美世界DOTA2联赛循环赛 DM vs Matador BO2第二场 11.04
2020/11/05 DOTA
python实现定时自动备份文件到其他主机的实例代码
2018/02/23 Python
tensorflow学习笔记之mnist的卷积神经网络实例
2018/04/15 Python
Python实现合并两个有序链表的方法示例
2019/01/31 Python
pandas中DataFrame修改index、columns名的方法示例
2019/08/02 Python
Python argparse模块应用实例解析
2019/11/15 Python
python内置模块collections知识点总结
2019/12/19 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
2020/05/09 Python
Python+PyQt5实现灭霸响指功能
2020/05/25 Python
python中watchdog文件监控与检测上传功能
2020/10/30 Python
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
英国电动工具购买网站:Anglia Tool Centre
2017/04/25 全球购物
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
2015年高校辅导员工作总结
2015/04/20 职场文书
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python
go开发alertmanger实现钉钉报警
2021/07/16 Golang
Java完整实现记事本代码
2022/06/16 Java/Android