Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta http-equiv="X-UA-Compatible" content="ie=edge">
- <!-- Bootstrap 4 CSS 的 CDN -->
- <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
- <title>Document</title>
- </head>
- <body>
- <!-- Vue實例的掛載點 -->
- <div class="container-fluid" id="app">
- <div class="alert alert-info mt-3" role="alert">
- <h5 class="text-center">新聞閱讀-依類別進行篩選</h5>
- <div class="row">
- <div class="col-6">
- <div class="form-group">
- <select class="form-control" v-model='section' @change="getPostsByCategory" id="exampleFormControlSelect1">
- <option v-for="section in sections">{{section}}</option>
- </select>
- </div>
- </div>
- <div class="col-6">
- <button type="button" class="btn btn-success" @click="getPostsByCategory">篩選</button>
- </div>
- </div>
- </div>
- <!-- row的特性就是4欄換1列,不是因為methods做到的,methods做到的是裝進兩個陣列 -->
- <div class="row" v-for="posts in results">
- <!-- {{posts}}目前是2維陣列,所以必須掛兩次迴圈尋覽出 -->
- <div class="col-3" v-for="post in posts">
- <div class="card">
- <div class="card-header">
- {{ post.title }}
- </div>
- <div class="card-body">
- <p class="card-text">{{ post.abstract }}</p>
- </div>
- </div>
- </div>
- </div>
- </div>
- <!-- <a href="db.json">db</a> -->
- <!-- Vue 的 CDN -->
- <script src="https://unpkg.com/vue/dist/vue.js"></script>
- <!-- Bootstrap 4 JavaScript 的 CDN -->
- <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
- <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>
- <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
- <!-- Axios 的 CDN -->
- <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
- <!-- Vue實例的程式碼 -->
- <script>
- const posts = []
- const SECTIONS_TW = "食品, 運動, 科技"
- new Vue({
- el: '#app',
- data: {
- posts: posts,
- results: [],
- sections: SECTIONS_TW.split(', '),
- section: '科技'
- },
- // created() {
- // this.getPostsByCategory(this.section)
- // },
- mounted() {
- axios.get('db.json').then((response) => {
- this.posts = response.data;
- console.log(this.posts);
- this.getPostsByCategory(this.section)
- }).catch(error => {
- console.log(error);
- })
- },
- methods: {
- getPostsByCategory() {
- //
- // console.log('posts', posts.slice());
- let posts = this.posts.filter(post => post.category === this.section)
- console.log('posts', posts);
- let i, j, chunkedArray = [],
- chunk = 4;
- //舉例科技有7筆,chunkedArray陣列的第0索引加入4筆物件posts.slice(0, 4)0.1.2.3...
- //i等於4依然小於posts.length的7,此時進入第二次迴圈,j=1,
- //chunkedArray陣列的第1索引加入4筆物件posts.slice(4, 8)4.5.6.7...
- //此時i等於8不會進入第三次迴圈。所以科技7筆資料只有2個索引
- for (i = 0, j = 0; i < posts.length; i += chunk, j++) {
- chunkedArray[j] = posts.slice(i, i + chunk);
- console.log('i', i);
- console.log('posts.length', posts.length);
- console.log(`chunkedArray${j}`, chunkedArray[j])
- }
- this.results = chunkedArray;
- console.log('results', this.results);
- }
- }
- });
- // console.log(`posts[0].title:${posts[0].title}`);
- //slice(包含開始,不包含最後一個)用法
- // var fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'];
- // var fruit2 = fruits.slice(1, 3);
- // console.log(fruit2);
- // fruit2 contains ['Orange', 'Lemon']
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement