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 相关文章推荐
关于Aptana Studio生成自动备份文件的解决办法
Dec 23 Javascript
js 小贴士一星期合集
Apr 07 Javascript
jQuery中创建实例与原型继承揭秘
Dec 21 Javascript
js实现jquery的offset()方法实例
Jan 10 Javascript
JavaScript实现数组随机排序的方法
Jun 26 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
Sep 12 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
Sep 04 Javascript
AngularJS通过$sce输出html的方法
Sep 22 Javascript
强大的JavaScript响应式图表Chartist.js的使用
Sep 13 Javascript
vue结合Echarts实现点击高亮效果的示例
Mar 17 Javascript
Weex开发之WEEX-EROS开发踩坑(小结)
Oct 16 Javascript
vue在线动态切换主题色方案
Mar 26 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
Yii PHP Framework实用入门教程(详细介绍)
2013/06/18 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
PHP Opcache安装和配置方法介绍
2015/05/28 PHP
php_pdo 预处理语句详解
2016/11/21 PHP
解决Laravel 不能创建 migration 的问题
2019/10/09 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
再探JavaScript作用域
2014/09/24 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
Javascript基础教程之数组 array
2015/01/18 Javascript
JavaScript中创建字典对象(dictionary)实例
2015/03/31 Javascript
原生JS实现-星级评分系统的简单实例
2016/08/21 Javascript
JS触摸事件、手势事件详解
2017/05/04 Javascript
基于Vue自定义指令实现按钮级权限控制思路详解
2018/05/23 Javascript
浅谈JavaScript闭包
2019/04/09 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
js判断密码强度的方法
2020/03/18 Javascript
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
Python实现二维有序数组查找的方法
2016/04/27 Python
Python读取mat文件,并保存为pickle格式的方法
2018/10/23 Python
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
浅谈keras中loss与val_loss的关系
2020/06/22 Python
python文件读取失败怎么处理
2020/06/23 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
利用CSS3伪元素实现逐渐发光的方格边框
2017/05/07 HTML / CSS
稀有和绝版书籍:Biblio.com
2017/02/02 全球购物
美国性感女装网站:bebe
2017/03/04 全球购物
策划主管的工作职责
2013/11/24 职场文书
四年大学生活的个人自我评价
2013/12/11 职场文书
工作表现自我评价
2014/02/08 职场文书
服务承诺书格式
2014/05/21 职场文书
婚前协议书范本两则
2014/10/16 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书
Python基本数据类型之字符串str
2021/07/21 Python