鍍金池/ 問答/HTML/ vue -router 跳轉(zhuǎn)不刷新 頁面不加載

vue -router 跳轉(zhuǎn)不刷新 頁面不加載

父頁面
父頁面

從父頁面點擊電影名稱進(jìn)入子頁面,如果不刷新頁面,從api上獲取的數(shù)據(jù)無法渲染
但是進(jìn)入子頁面后,從檢查中看見代碼已經(jīng)出來了,應(yīng)該是已經(jīng)通過api拿到數(shù)據(jù)
子頁面
子頁面

子頁面檢查
子頁面檢查

刷新后的子頁面
刷新后的子頁面

<template>
    <div id="Home">
        <div id="search">
            <input type="text" id="search_box" placeholder="請輸入搜索的內(nèi)容" v-on:keypress.enter="search()" />
            <img src="../assets/搜索.png" v-on:click="search()" />
        </div>
        <div id="title">
            <h3 id="title_msg">{{msg}}</h3>
        </div>
        <img src="../assets/載入中.gif" id="loading" />
        <div id="box">
            <ul>
                <li v-for="value in Movie" class="outer">
                    <div class="image">
                        <img v-bind:src="value.images.small" v-bind:alt="value.title" class="image" />
                    </div>
                    <div>
                        <router-link :to="'/Movie/'+value.id">
                            <h4>{{value.title}}</h4>
                        </router-link>
                        <ul>
                            <li v-for="val in value.casts" class="cast">{{val.name}}</li>
                        </ul>
                        <ul class="actor">
                            <li v-for="val in value.genres" class="type">{{val}}</li>
                        </ul>
                        <p>{{value.year}}</p>
                    </div>
                </li>
            </ul>
        </div>
    </div>
</template>

<script>
    import Jquery from '@/assets/js/jquery-3.2.1.min.js'
    export default {
        name: 'Home',
        data() {
            return {
                Movie: [],
                msg: ''
            }
        },
        created: function() {
            let vm = this;
            $.ajax({
                type: "get",
                url: "https://api.douban.com/v2/movie/in_theaters",
                async: true,
                dataType: 'jsonp',
                success: function(data) {
                    vm.Movie = data.subjects;
                    let height = Math.ceil(vm.Movie.length / 4) * 480;
                    $('#box').css('height', height + 'px');
                    vm.msg = '正在熱映'
                }
            });
            $(document).ajaxStart(function() {
                $('#loading').show();
                $('#box').hide();
            });
            $(document).ajaxStop(function() {
                $('#loading').hide();
                $('#box').show();
            });
        },
        methods: {
            search() {
                let vm = this;
                let value = document.getElementById('search_box').value;
                if(value == '') {
                    alert('請輸入搜索內(nèi)容!')
                } else {
                    $.ajax({
                        type: "get",
                        url: "http://api.douban.com/v2/movie/search?q=" + value,
                        async: true,
                        dataType: 'jsonp',
                        success: function(data) {
                            vm.Movie = data.subjects;
                            let height = Math.ceil(vm.Movie.length / 4) * 480;
                            $('#box').css('height', height + 'px');
                            vm.msg = '搜索內(nèi)容'
                        }
                    });
                    $(document).ajaxStart(function() {
                        $('#loading').show();
                        $('#box').hide();
                    });
                    $(document).ajaxStop(function() {
                        $('#loading').hide();
                        $('#box').show();
                    })
                }
            }
        }
    }
</script>

<style lang="less">
    @import url("../assets/css/list.less");
    @import url("../assets/css/search_box.less");
</style>

父頁面代碼

<template>
    <div id="Movie">
        <div id="box">
            <div id="title">
                <span class="large">{{Movie.title}}</span>
                <span class="middle">{{Movie.original_title}}</span>
                <span class="middle" style="font-weight: bolder; font-size: 24px;">({{Movie.year}})</span>
            </div>
            <div class="image">
                <img v-bind:src="Movie.images.large" v-bind:alt="Movie.title" />
            </div>
            <ul class="directors">
                <li class="tag">導(dǎo)演:</li>
                <li v-for="value in Movie.directors">{{value.name}}</li>
            </ul>
            <ul class="autor">
                <li class="tag">主演:</li>
                <li v-for="value in Movie.casts">{{value.name}}</li>
            </ul>
            <ul class="type">
                <li class="tag">類型:</li>
                <li v-for="value in Movie.genres">{{value}}</li>
            </ul>
            <p class="rating">豆瓣評分:<meter min="0" max="10" v-bind:value="Movie.rating.average"></meter>{{Movie.rating.average}}</p>
            <ul class="wanna">
                <li class="left">想看({{Movie.wish_count}})</li>
                <li class="right">看過({{Movie.reviews_count}})</li>
            </ul>
            <h3>{{Movie.title}}的劇情介紹</h3>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{Movie.summary}}</p>
        </div>
    </div>
</template>

<script>
    import Jquery from '@/assets/js/jquery-3.2.1.min.js'
    export default {
        name: 'Movie',
        data() {
            return {
                Movie: {},
                id: ''
            }
        },
        created: function() {
            let vm = this;
            $.ajax({
                type: "get",
                url: "http://api.douban.com/v2/movie/subject/" + this.$route.params.id,
                async: true,
                dataType: 'jsonp',
                success: function(data) {
                    vm.Movie = data;
                }
            });
        }
    }
</script>

<style lang="less">
    @import url("../assets/css/movie.less");
</style>

子頁面代碼

回答
編輯回答
練命

你的<router-view />呢?

2017年8月3日 05:48
編輯回答
墨小羽

問題已解決,原來在不同的vue文件之中不能明明一樣的id,因為父頁面跟子頁面命名了同一個id

2018年5月6日 06:07