关于本站
“最难不过坚持”
本人承接扒站仿站,php网站维护,病毒查杀,网站编辑,网站改版,html制作
有需要网站维护,改版,病毒查杀,网站编辑,网站备案,html制作等相关的工作可以联系我。
本人有多年相关工作经验,也可提供免费咨询,交个朋友。
有需要探讨问题的朋友,也可以加我微信,共同探讨!
微信:15011482830 QQ:408917339
2712
39
分类目录
最新评论
- https://jueru.net/
-
评 留言
- :weixiao:
-
评 留言
- :shuijiao: :weiqu: :zhenbang: :leng:
-
评 留言
- :yiwen: :yiwen: :yiwen: :yiwen:
-
评 EasySass: could not generate CSS file. See Output panel for details.
- 这个业务逻辑多少都有点奇怪了,阅读浏览次数增值在新闻详情页的控制器方法里setInc,这怎么还写进模型事件里了。如果非要用onAfterRead也可以,把新闻文章的内容单独分出来一个news_content表,然后把它和news做关联,然后给news_content表的onAfterRead事件做增值处理,这样点进新闻页内查询到文章内容时才会触发它。
-
评 TP6模型事件-查询后onAfterRead不好用
文章标签更多
Vue github案例,全局事件总线,pubsub-js消息订阅与发布
效果图:
网上找到一篇详细的文章,记录一下:https://blog.csdn.net/m0_53022813/article/details/127418134
以下代码是成品,包含全局事件总线和pubsub-js消息订阅与发布两种方式
1,main.js 安装全局事件总线
import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false
new Vue({
render: h => h(App),
beforeCreate(){
Vue.prototype.$bus = this // 安装全局事件总线
}
}).$mount('#app')
2,App组件
<template>
<div id="app">
<Search/>
<List/>
</div>
</template>
<script>
import Search from './components/Search.vue'
import List from './components/List.vue'
export default {
name:'App',
components:{
Search,List
}
}
</script>
<style>
</style>
3,List组件-全局事件总线绑定自定义事件/pubsub-js订阅消息
<template>
<div>
<!-- 展示用户列表 -->
<ul v-show="info.users.length">
<li v-for="user in info.users" :key="user.id">
<a href="user.html_url" target="_blank">
<img :src="user.avatar_url" alt="">
</a>
<br>
{{user.login}}
</li>
</ul>
<!-- 展示欢迎词 -->
<h2 v-show="info.isFirst">欢迎使用!</h2>
<!-- 展示加载中 -->
<h2 v-show="info.isLoading">加载中...</h2>
<!-- 展示错误信息 -->
<h2 v-show="info.errMsg">{{info.errMsg}}</h2>
</div>
</template>
<script>
import pubsub from 'pubsub-js'
export default {
name:'List',
data(){
return {
info:{
isFirst:true, // 是否初次展示
isLoading:false, // 是否加载中
errMsg:'', // 错误信息
users:[]
}
}
},
mounted() {
// 方式一:全局事件总线
// this.$bus.$on('updateListData',(dataObj)=>{
// // this.info = dataObj // 这样isFirst属性会丢失
// this.info = {...this.info,...dataObj} // 合并对象,重复的属性以后面为主
// })
// 方式二:pubsub-js消息订阅与发布
this.updateListDataId = pubsub.subscribe('updateListData',(msg,dataObj)=>{
this.info = {...this.info,...dataObj}
})
},
beforeDestroy() {
// this.$bus.$off('updateListData') // 解绑
pubsub.unsubscribe(this.updateListDataId) // 取消订阅
},
}
</script>
<style scoped>
li{
float: left;
width: 200px;
list-style: none;
text-align: center;
}
li img{
width: 100%;
height: 200px;
}
</style>
4,Search组件-触发全局事件总线事件/pubsub-js发布消息
<template>
<div>
<input type="text" v-model="keyword">
<button @click="searchUsers">搜索</button>
</div>
</template>
<script>
import axios from 'axios'
import pubsub from 'pubsub-js'
export default {
name:'Search',
data(){
return {
keyword:''
}
},
methods:{
searchUsers(){
// 全局事件总线
// 请求前更新List数据-欢迎使用变成加载中
// this.$bus.$emit('updateListData',{isFirst:false,isLoading:true,errMsg:'',users:[]})
// axios.get(`https://api.github.com/search/users?q=${this.keyword}`).then(
// response=>{
// // console.log(response.data);
// this.$bus.$emit('updateListData',{isLoading:false,errMsg:'',users:response.data.items})
// },
// error=>{
// // console.log(error.message);
// this.$bus.$emit('updateListData',{isLoading:false,errMsg:error.message,users:[]})
// }
// )
// 消息订阅与发布
pubsub.publish('updateListData',{isFirst:false,isLoading:true,errMsg:'',users:[]})
axios.get(`https://api.github.com/search/users?q=${this.keyword}`).then(
response=>{
// console.log(response.data);
pubsub.publish('updateListData',{isLoading:false,errMsg:'',users:response.data.items})
},
error=>{
// console.log(error.message);
pubsub.publish('updateListData',{isLoading:false,errMsg:error.message,users:[]})
}
)
}
}
}
</script>
<style>
</style>
赏
相关推荐
接口返回request failed with status code 500错误
接口返回request failed with status code 500错误
登录界面,验证账号密码成功,但是返回500错误
可能原因:linux服务器,用tp5搭建的后台及接口,会生成一部分缓存文件,但是linux默认没有权限创建数据,所以,只要在缓存文件夹runtime添加写的权限即可
解决errors and 0 warnings potentially fixable with the `--fix` option.问题
解决errors and 0 warnings potentially fixable with the `--fix` option.问题
项目正常运行,就是有这个提示
找到.eslintrc.js注释掉// 'eslint:recommended'
评论加载中...
前一篇: vue中使用animate.css
后一篇: vue中的插槽(slot)