2017-12-25 12 views
1

コンポーネントをレンダリングしようとしましたが、エラーが発生しました:プロパティまたはメソッド "joke"は定義されていません。インスタンスでは定義されていませんが、レンダリング中に参照されます。私はAxiosのhttpライブラリ経由でデータを取得するために、お父さんのジョークAPIを使用しています。ここに私のコードです:{{joke}}コンポーネントのレンダリング

変更を使用する前に、

var joke = Vue.component('joke', { 
 
    template: '#joke', 
 
    data() { 
 
    return { 
 
     jokes: [] 
 
    }; 
 
    }, 
 
    created() { 
 
    axios 
 
     .get('https://icanhazdadjoke.com/search', { 
 
     headers: { 
 
      Accept: 'application/json' 
 
     }, 
 
     params: { 
 
      limit: 30 
 
     } 
 
     }) 
 
     .then(response => { 
 
     this.jokes = response.data.results; 
 
     }); 
 
    } 
 
}); 
 

 
new Vue({ 
 
    el: '#main' 
 
});
<!DOCTYPE html> 
 
    <html> 
 
    <head> 
 
    <meta charset="utf-8"> 
 
    <title>vue Dad JOkes</title> 
 
    <!--styles--> 
 
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Montserrat"> 
 
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/css/bootstrap.min.css"> 
 
    <link rel="stylesheet" href="style.css"> 
 
    <!--scripts--> 
 
    <script src="https://unpkg.com/[email protected]/dist/vue.js" charset="utf-8"></script> 
 
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script> 
 
    </head> 
 
    <body> 
 
    <div id="main"> 
 
     <joke></joke> 
 
    </div> 
 
    <template id="joke"> 
 
     <ul> 
 
     <li v-for="joke in jokes"></li> 
 
     <p>{{joke.joke}}</p> 
 
     </ul> 
 

 
    </template> 
 

 

 
    <script src = "app.js" charset="utf-8"></script> 
 
    </body> 
 
    
 
    </html>
それはHTMLで簡単な問題だ

答えて

1

、あなたが</li>終わった

<ul> 
    <li v-for="joke in jokes"></li> 
    <p>{{joke.joke}}</p> 
</ul> 

<ul> 
    <li v-for="joke in jokes"> 
    <p>{{joke.joke}}</p> 
    </li> 
</ul> 

ここにあなたの作業例です:

var joke = Vue.component('joke', { 
 
    template: '#joke', 
 
    data() { 
 
    return { 
 
     jokes: [] 
 
    }; 
 
    }, 
 
    created() { 
 
    axios 
 
     .get('https://icanhazdadjoke.com/search', { 
 
     headers: { 
 
      Accept: 'application/json' 
 
     }, 
 
     params: { 
 
      limit: 30 
 
     } 
 
     }) 
 
     .then(response => { 
 
     this.jokes = response.data.results; 
 
     }); 
 
    } 
 
}); 
 

 
new Vue({ 
 
    el: '#main' 
 
});
<!DOCTYPE html> 
 
    <html> 
 
    <head> 
 
    <meta charset="utf-8"> 
 
    <title>vue Dad JOkes</title> 
 
    <!--styles--> 
 
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Montserrat"> 
 
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/css/bootstrap.min.css"> 
 
    <link rel="stylesheet" href="style.css"> 
 
    <!--scripts--> 
 
    <script src="https://unpkg.com/[email protected]/dist/vue.js" charset="utf-8"></script> 
 
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script> 
 
    </head> 
 
    <body> 
 
    <div id="main"> 
 
     <joke></joke> 
 
    </div> 
 
    <template id="joke"> 
 
     <ul> 
 
     <li v-for="joke in jokes"> 
 
      <p>{{joke.joke}}</p> 
 
     </li> 
 
     </ul> 
 

 
    </template> 
 

 

 
    <script src = "app.js" charset="utf-8"></script> 
 
    </body> 
 
    
 
    </html>

関連する問題