Vue--- Vue(Pubsub + Ajax) 数据交互
案例知识点
- 兄弟组件儿的通信 使用了Pubsub 订阅与发布
- ajax数据请求 获取前 获取中 获取后 获取为空 获取异常
- 获取成功后显示数据给到 原先定义号的 jsonData users
vue Search案例 消息订阅pubsub与ajax
pubsub消息订阅组件,便于兄弟组件间调用
npm install --save pubsub-js

App.vue
<template>
<div id="app">
<div class="container">
<Search/>
<users-main/>
</div>
</div>
</template> <script>
import Search from './components/Search.vue'
import Main from './components/Main.vue'
export default{
components:{
Search,
// 内部定义的关键词名称 不可以使用 所以赋值一个名字
UsersMain:Main }
};
</script> <style type="stylus"> </style>Main.vue
// 由于请求状态在Main中,ajax写在main中以便同步更新4个状态。 写在search中不便更新状态。
<template>
<div>
<!-- 搜索我有四种状态 -->
<!-- 1.搜索之前 -->
<h2 v-if="firstView">输入用户名搜索</h2>
<!-- 2.搜索中.... -->
<h2 v-if="loading">GitData...</h2>
<!-- 4.没有搜索到 -->
<h2 v-if="overNull">该关键字没有搜索到Data...</h2>
<!-- 3.搜索失败error -->
<h2 v-if="errorMsg">{{errorMsg}}</h2>
<div v-else class="row" v-for="(user,index) in users" :key="index" :index="index">
<div class="card">
<a :href="user.url" target="_blank">
<img :src="user.avatar_url" style='width: 100px'/>
</a>
<p class="card-text">{{user.name}}</p>
</div>
</div>
</div>
</template> <script type="text/ecmascript-6">
import PubSub from 'pubsub-js'
import axios from 'axios'
export default{
data(){
return {
firstView: true,
loading:false,
overNull:false,
errorMsg: '',
users:null
// [
// {url:'',avatar_url:'',name:''},
// ] }
},
mounted(){
// 是否在此发ajax消息 是点击search后
// 订阅搜索的消息
PubSub.subscribe('search',(msg,searchName)=>{
const url = `https://api.github.com/search/users?q=${searchName}`
// 更新失败(请求中)
this.firstView = false
this.loading = true
this.overNull = false
alert('请求中')
// 发送ajax请求
axios.get(url).then(response=> {
// 获取数据 data
const result = response.data
// data中的items 里面有图片的路径 名称
const users = result.items.map(item=>({
url:item.html_url,
avatar_url:item.avatar_url,
name: item.login
}))
if(users.length !== 0){
console.log(users)
} // 成功更新状态(成功)
this.loading = false
this.users = users if(users.length == 0){
this.overNull = true
}
// 失败更新状态(失败)
}).catch(error=>{
this.loading = false
this.errorMsg = '请求失败'
}) })
} };
</script> <style type="stylus" rel="stylesheet/stylus"> .card {
float: left;
width: 33.333%;
padding: .75rem;
margin-bottom: 2rem;
border: 1px solid #efefef;
text-align: center;
} .card > img {
margin-bottom: .75rem;
border-radius: 100px;
} .card-text {
font-size: 85%;
} </style>Search.vue
<template>
<div>
<section class="jumbotron">
<h3 class="jumbotron-heading">Search Github Users</h3>
<div>
<input type="text" placeholder="enter the name you search" v-model="searchName"/>
<button @click="search">Search</button>
</div>
</section>
</div>
</template> <script type="text/ecmascript-6">
import PubSub from 'pubsub-js'
export default{
data(){
return {
searchName:''
}
},
methods:{
search(){
const searchName = this.searchName.trim()
if(searchName){
// 发布搜索的消息
PubSub.publish('search',searchName)
}
}
} };
</script> <style type="stylus" rel="stylesheet/stylus"> </style>
Vue--- Vue(Pubsub + Ajax) 数据交互的更多相关文章
- Atitit vue.js 把ajax数据 绑定到form表单
Atitit vue.js 把ajax数据 绑定到form表单 1.1. 使用场景:主要应用在编辑与提交场合..1 1.2. 绑定数据到form控件,可以使用jquery,不过vue.js更加简单1 ...
- 弹出层和ajax数据交互
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs& ...
- Struts2与Ajax数据交互
写在前面: ajax请求在项目中常常使用,今天就平时掌握的总结一下,关于使用ajax请求到Struts2中的action时,前台页面与后台action之间的数据传递交互问题. 这里我主要记录下自己所掌 ...
- ajax数据交互
目录 一.ORM查询优化 1-1. only与defer 1-2. select_related与prefatch_related 二.MTV与MVC模型 三.choices参数 四.AJAX 4-1 ...
- django建立管理系统之五----单页ajax数据交互
ajax数据提交: 需求: 1. 点击ajax方式提交后数据提交到后台数据库,并且在前台实现数据更新 a.可以用刷新页面来实现数据页面的更新 对应的html,实现局部刷新(可以用刷新页面实现,例如 $ ...
- vue.js 三(数据交互)isomorphic-fetch
至于fetch的介绍,在这里就不多说了,官方和网络上的说明不少 之前使用jquery的Ajax朋友,可以尝试一下使用一下这个新的api 推荐使用isomorphic-fetch,兼容Node.js和浏 ...
- ajax数据交互(arcgis server)
通过ajax来调用服务器map数据,来实现搜索功能. 效果: 1.我要搜索下中国移动的地理信息: 2.会搜出17条消息,然后把他们分页显示,一页6条: 3.每一页的6天数据,会在map生成一个6条ma ...
- jq ajax数据交互
get 与 post 的区别 了解和使用 get和post是HTTP与服务器交互的方式, 说到方式,其实总共有四种:put,delete,post,get. 他们的作用分别是对服务器资源的增,删,改, ...
- jSon和Ajax登录功能,ajax数据交互案例
ajax实例,检测用户与注册 检测用户名是否被占用: 在用户填写完用户名之后,ajax会异步向服务器发送请求,判断用户名是否存在 首先写好静态页面: index.html <!DOCTYPE h ...
- EChats+Ajax之柱状图的数据交互
原文链接:https://blog.csdn.net/qq_37936542/article/details/79723710 一:下载 echarts.min.js 选择完整版进行下载,精简版和常用 ...
随机推荐
- web.config节点
1.clientCache 源码: <system.webServer> <staticContent> <clientCache cacheControlMode=&q ...
- 04.Continue,和三元表达式的学习
立即结束本次循环,判断循环条件,如果成立,则进入下一次循环,否则退出循环. 举例:运动员跑步喝水的例子 比如:我编写代码的时候,上个厕所,回来继续写代码 练习1: namespace _09.练习02 ...
- Thrift笔记(三)--Thrift框架通信源码分析
Thrift 客户端调用RPC的Demo public static void main(String[] args) throws Exception { TTransport transport ...
- ireport 导出excel 分页 和 文本转数字格式的解决方法
景:ireport 画excel 报表,导出时要求 数据分页,每页包含 标题和页脚 1.画excel 2.处理分页 首先建立一个变量totalNum 用于记录总共有多少条记录,注意设置属性为Integ ...
- 洛谷P1966 火柴排队(逆序对)
题意 题目链接 Sol 不算很难的一道题 首先要保证权值最小,不难想到一种贪心策略,即把两个序列中rank相同的数放到同一个位置 证明也比较trivial.假设\(A\)中有两个元素\(a, b\), ...
- 深入理解Javascript之执行上下文(Execution Context)
在这篇文章中,将比较深入地阐述下执行上下文 - Javascript中最基础也是最重要的一个概念.相信读完这篇文章后,你就会明白javascript引擎内部在执行代码以前到底做了些什么,为什么某些函数 ...
- 启动eclipse出现“Error opening registry key 'software\Javasoft\Java Runtime Environment'”
启动eclipse出现“Error opening registry key 'software\Javasoft\Java Runtime Environment'”,“java was start ...
- C#转Java之路之二:多线程原子变量
多线程操作会带来不一致性,为了实现一直性.我们可以用关键字:synchronized同步对象或者volatile轻量级.内存可见性. 两个关键字使用对比: 1.synchronized比较重,属于悲观 ...
- linux下使用libxml2实现对xml文件的读取及查询
由于项目需要,这两天在用C++做XML文件解析的工作.在linux下有个很方便的操作xml文件的库——libxml2,它提供了一套创建和查询xml文件的C语言的接口.这篇博客主要介绍如何使用libxm ...
- python 整形方法
1. int() a = ' print(type(a), a) b = int(a) print(type(b), b) # 输出 <class 'str'> 123 <class ...