<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue jsonp</title>
<script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
<script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.min.js"></script>
<script src="https://cdn.bootcss.com/axios/0.17.1/axios.min.js"></script>
<style>
.fade-enter-active,.fade-leave-active{
transition:opacity .5s
}
.fade-enter,.fade-leave-active{
opacity: 0;
}
</style>
</head>
<body>
<div id="app"></div>
<!--<script type="text/ecmascript-6">-->
<script>
/*mode="out-in"原始内容先执行后执行新内容*/
var App = Vue.component('app', {
/*router-view显示路由*/
template: `
<div id="app">
<transition name="fade" mode="out-in">
<router-view :list="list"></router-view>
</transition>
</div>
`,
data(){
return {
list:null
}
},
/*父组件给子组件传值*/
mounted(){
//axios~~ajax
axios.get('https://route.showapi.com/955-1', {
params: {
page: '1',
showapi_appid: '30603',
type: 'dp',
showapi_timestamp: Date.now(),
showapi_sign: '98960666afeb4992ae91971d13494090'
}
}).then( res=> {
//console.log(res.data);
//this默认window,但是箭头函数指向当前
this.list = res.data.showapi_res_body.pagebean.contentlist;
})
},
});
var Index=Vue.component('index',{
//父组件传过来的 list
props:['list'],
template:`
<div>
{{type}}
<select v-model="type" @click="getlist">
<option value="dp">短片鬼故事</option>
<option value="cp">长片鬼故事</option>
<option value="xy">校园鬼故事</option>
<option value="yy">医院鬼故事</option>
<option value="jl">家里鬼故事</option>
<option value="mj">民间鬼故事</option>
</select>
<ul>
<li v-for="item in newlist || list">
<router-link :to="{path:item.id}">{{item.title}}</router-link>
{{item.id}}
</li>
</ul>
</div>
`,
data(){
return {
type:'dp',
//新赋值
newlist:null
}
},
methods:{
getlist(){
axios.get('https://route.showapi.com/955-1', {
params: {
page: '1',
type:this.type,
showapi_appid: '30603',
showapi_timestamp: Date.now(),
showapi_sign: '98960666afeb4992ae91971d13494090'
}
}).then(res=>{
this.newlist = res.data.showapi_res_body.pagebean.contentlist;
})
}
}
});
var Article = Vue.component('article',{
template:'<div v-html="dp"></div>',
data(){
return {
dp:null
}
},
mounted(){
axios.get('https://route.showapi.com/955-2', {
params: {
page: '1',
id: `/dp/${this.$route.params.num}`,
showapi_appid: '30603',
showapi_timestamp: Date.now(),
showapi_sign: '98960666afeb4992ae91971d13494090'
}
}).then(res => {
console.log(res)
this.dp=res.data.showapi_res_body.text;
})
}
});
var router=new VueRouter({
routes:[
{path:'/',component:Index},
{path:'/dp/:num',component:Article}// /dp/48830.html,使用$route.params.num查看
]
});
new Vue({
el: '#app',
router,
//箭头函数一行自带return
//模板
render: h => h(App)
});
</script>
</body>
</html>