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 变量命名规则
Sep 23 Javascript
关于JavaScript的with 语句的使用方法
May 09 Javascript
JavaScript实现数字数组正序排列的方法
Apr 06 Javascript
简述AngularJS相关的一些编程思想
Jun 23 Javascript
JavaScript的instanceof运算符学习教程
Jun 08 Javascript
jQuery实现的导航下拉菜单效果
Jul 04 Javascript
JavaScript导航脚本判断当前导航
Jul 12 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
Jul 20 Javascript
对Vue table 动态表格td可编辑的方法详解
Aug 28 Javascript
Vue+Webpack完美整合富文本编辑器TinyMce的方法
Nov 30 Javascript
js实现随机点名器精简版
Jun 29 Javascript
jQuery实现图片切换效果
Oct 19 jQuery
微信小程序 教程之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
MySql中正则表达式的使用方法描述
2008/07/30 PHP
解析dedecms空间迁移步骤详解
2013/05/15 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
PHP7 标准库修改
2021/03/09 PHP
使用jQuery轻松实现Ajax的实例代码
2010/08/16 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
2016/09/20 Javascript
vue的props实现子组件随父组件一起变化
2016/10/27 Javascript
如何解决vue与传统jquery插件冲突
2017/03/20 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
Javascript实现信息滚动效果
2017/05/18 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
2017/06/12 jQuery
微信小程序删除处理详解
2017/08/16 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
2017/10/24 Javascript
js原生日历的实例(推荐)
2017/10/31 Javascript
React-router4路由监听的实现
2018/08/07 Javascript
nodejs实现一个word文档解析器思路详解
2018/08/14 NodeJs
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
Vuejs中的watch实例详解(监听者)
2020/01/05 Javascript
django上传图片并生成缩略图方法示例
2017/12/11 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
2018/07/02 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
Linux上使用Python统计每天的键盘输入次数
2019/04/17 Python
python实现淘宝购物系统
2019/10/25 Python
IronPython连接MySQL的方法步骤
2019/12/27 Python
Keras SGD 随机梯度下降优化器参数设置方式
2020/06/19 Python
canvas实现圆绘制的示例代码
2019/09/11 HTML / CSS
编写函数,将一个3*3矩阵转置
2013/10/09 面试题
便利店的创业计划书
2014/01/15 职场文书
尽职尽责村干部自我鉴定
2014/01/23 职场文书
活动总结的格式
2014/05/07 职场文书
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers
Java 垃圾回收超详细讲解记忆集和卡表
2022/04/08 Java/Android
MySQL中EXPLAIN语句及用法
2022/05/20 MySQL
JS高级程序设计之class继承重点详解
2022/07/07 Javascript