Advertisement
Guest User

Untitled

a guest
Dec 20th, 2019
510
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE html>
  2. <html lang="en">
  3.  
  4. <head>
  5.     <meta charset="UTF-8">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.     <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8.  
  9.     <!-- Bootstrap 4 CSS 的 CDN -->
  10.     <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
  11.  
  12.     <title>Document</title>
  13. </head>
  14.  
  15. <body>
  16.     <!-- Vue實例的掛載點 -->
  17.     <div class="container-fluid" id="app">
  18.         <div class="alert alert-info mt-3" role="alert">
  19.             <h5 class="text-center">新聞閱讀-依類別進行篩選</h5>
  20.             <div class="row">
  21.                 <div class="col-6">
  22.                     <div class="form-group">
  23.                         <select class="form-control" v-model='section' @change="getPostsByCategory" id="exampleFormControlSelect1">
  24.                           <option v-for="section in sections">{{section}}</option>
  25.                         </select>
  26.                     </div>
  27.                 </div>
  28.                 <div class="col-6">
  29.                     <button type="button" class="btn btn-success" @click="getPostsByCategory">篩選</button>
  30.                 </div>
  31.             </div>
  32.         </div>
  33.         <!-- row的特性就是4欄換1列,不是因為methods做到的,methods做到的是裝進兩個陣列 -->
  34.         <div class="row" v-for="posts in results">
  35.             <!-- {{posts}}目前是2維陣列,所以必須掛兩次迴圈尋覽出 -->
  36.             <div class="col-3" v-for="post in posts">
  37.                 <div class="card">
  38.                     <div class="card-header">
  39.                         {{ post.title }}
  40.                     </div>
  41.                     <div class="card-body">
  42.                         <p class="card-text">{{ post.abstract }}</p>
  43.                     </div>
  44.                 </div>
  45.             </div>
  46.         </div>
  47.     </div>
  48.     <!-- <a href="db.json">db</a> -->
  49.     <!-- Vue 的 CDN -->
  50.     <script src="https://unpkg.com/vue/dist/vue.js"></script>
  51.  
  52.     <!-- Bootstrap 4 JavaScript 的 CDN -->
  53.     <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
  54.     <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
  55.     <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
  56.     <!-- Axios 的 CDN -->
  57.     <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  58.     <!-- Vue實例的程式碼 -->
  59.     <script>
  60.         const posts = []
  61.         const SECTIONS_TW = "食品, 運動, 科技"
  62.         new Vue({
  63.             el: '#app',
  64.             data: {
  65.                 posts: posts,
  66.                 results: [],
  67.                 sections: SECTIONS_TW.split(', '),
  68.                 section: '科技'
  69.             },
  70.             // created() {
  71.             //     this.getPostsByCategory(this.section)
  72.             // },
  73.             mounted() {
  74.                 axios.get('db.json').then((response) => {
  75.                     this.posts = response.data;
  76.                     console.log(this.posts);
  77.                     this.getPostsByCategory(this.section)
  78.                 }).catch(error => {
  79.                     console.log(error);
  80.                 })
  81.             },
  82.             methods: {
  83.                 getPostsByCategory() {
  84.                     //
  85.                     // console.log('posts', posts.slice());
  86.                     let posts = this.posts.filter(post => post.category === this.section)
  87.                     console.log('posts', posts);
  88.  
  89.                     let i, j, chunkedArray = [],
  90.                         chunk = 4;
  91.                     //舉例科技有7筆,chunkedArray陣列的第0索引加入4筆物件posts.slice(0, 4)0.1.2.3...
  92.                     //i等於4依然小於posts.length的7,此時進入第二次迴圈,j=1,
  93.                     //chunkedArray陣列的第1索引加入4筆物件posts.slice(4, 8)4.5.6.7...
  94.                     //此時i等於8不會進入第三次迴圈。所以科技7筆資料只有2個索引
  95.                     for (i = 0, j = 0; i < posts.length; i += chunk, j++) {
  96.                         chunkedArray[j] = posts.slice(i, i + chunk);
  97.                         console.log('i', i);
  98.                         console.log('posts.length', posts.length);
  99.                         console.log(`chunkedArray${j}`, chunkedArray[j])
  100.                     }
  101.                     this.results = chunkedArray;
  102.                     console.log('results', this.results);
  103.                 }
  104.             }
  105.         });
  106.         // console.log(`posts[0].title:${posts[0].title}`);
  107.  
  108.         //slice(包含開始,不包含最後一個)用法
  109.         // var fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'];
  110.         // var fruit2 = fruits.slice(1, 3);
  111.         // console.log(fruit2);
  112.         // fruit2 contains ['Orange', 'Lemon']
  113.     </script>
  114. </body>
  115.  
  116. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement