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 15 Javascript
JavaScript高级程序设计 学习笔记 js高级技巧
Sep 20 Javascript
jQuery随机切换图片的小例子
Apr 18 Javascript
js图片预加载示例
Apr 30 Javascript
在myeclipse中如何加入jquery代码提示功能
Jun 03 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
Aug 22 Javascript
JS中的forEach、$.each、map方法推荐
Apr 05 Javascript
js实现砖头在页面拖拉效果
Nov 20 Javascript
angular2 ng2 @input和@output理解及示例
Oct 10 Javascript
使用原生js封装的ajax实例(兼容jsonp)
Oct 12 Javascript
JS防抖和节流实例解析
Sep 24 Javascript
vue与django集成打包的实现方法
Nov 11 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 Session变量不能传送到下一页的解决方法
2009/11/27 PHP
php+mysql删除指定编号员工信息的方法
2015/01/14 PHP
PHP简单获取多个checkbox值的方法
2016/06/13 PHP
PHP支付宝当面付2.0代码
2018/12/21 PHP
PHP7创建销毁session的实例方法
2020/02/03 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
ie和firefox中img对象区别的困惑
2006/12/27 Javascript
javascript iframe编程相关代码
2009/12/28 Javascript
JQuery遍历DOM节点的方法
2015/06/11 Javascript
js模仿php中strtotime()与date()函数实现方法
2015/08/11 Javascript
Jquery获取第一个子元素简单实例
2016/06/02 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
2016/06/30 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持
2017/10/21 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
在vue中获取token,并将token写进header的方法
2018/09/26 Javascript
微信小程序tab切换可滑动切换导航栏跟随滚动实现代码
2019/09/04 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
[42:27]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第三局
2016/03/05 DOTA
Python中使用strip()方法删除字符串中空格的教程
2015/05/20 Python
python实现中文分词FMM算法实例
2015/07/10 Python
Python subprocess模块详细解读
2018/01/29 Python
python pprint模块中print()和pprint()两者的区别
2020/02/10 Python
postman和python mock测试过程图解
2020/02/22 Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
2020/03/11 Python
django之导入并执行自定义的函数模块图解
2020/04/01 Python
买卖正宗运动鞋:GOAT
2019/12/06 全球购物
工会2014法制宣传日活动总结
2014/11/01 职场文书
租赁协议书
2015/01/27 职场文书
教师工作证明范本
2015/06/12 职场文书
敬老院活动感想
2015/08/07 职场文书
python文件目录操作之os模块
2021/05/08 Python
js实现自动锁屏功能
2021/06/02 Javascript
SpringDataJPA实体类关系映射配置方式
2021/12/06 Java/Android
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏