vue.js通过自定义指令实现数据拉取更新的实现方法
前言
这篇文章的代码片段位于vue的单文件组件中,即以.vue结尾的文件中,本文说明的只是一种实现方法,既不是唯一的方法也不是最好的方法,如果大家有更好的方法可以留言,大家进行讨论。
第一步
首先,一定要先定义变量:
//app.vue<script> data(){ return{ //定义getData getData:{}, //定义自定义指令的绑定值 ifUpdate:true } }
第二步
然后要使用ajax的话,要在index.html里引入jquery,这样就可以全局使用了:
//index.html <scripttype="text/javascript"src="./lib/js/jquery-2.1.1.min.js"></script>
第三步
接着使用自定义指令,在组件实例化后,会自动执行自定义指令里的方法:
组件实例化后会立即以初始值ifUpdate为参数第一次调用自定义指令initData的方法,之后每次参数值ifUpdate变化时会再次调用initData的函数,参数为ifUpdate的新值与旧值。
//app.vue<template> //在页面节点(自由选择)中绑定自定义指令 <divv-initData="ifUpdate"></div>
//app.vue<script> //定义自定义指令 directives:{ initData:function(val,oldVal){ if(!val){ return; } varself=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能有所帮助,如果有疑问大家可以留言交流。