zoukankan      html  css  js  c++  java
  • vue.js实现简单增删效果

    Vue.js 的核心是一个响应的数据绑定系统,它让数据与 DOM 保持同步非常简单。在使用 jQuery 手工操作 DOM 时,我们的代码常常是命令式的、重复的与易错的。Vue.js 拥抱数据驱动的视图概念。通俗地讲,它意味着我们在普通 HTML 模板中使用特殊的语法将 DOM “绑定”到底层数据。一旦创建了绑定,DOM 将与数据保持同步。每当修改了数据,DOM 便相应地更新。这样我们应用中的逻辑就几乎都是直接修改数据了,不必与 DOM 更新搅在一起。这让我们的代码更容易撰写、理解与维护。

    html:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Document</title>
     6     <link rel="stylesheet" type="text/css" href="https://cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css">
     7     <script src="dist/vue.min.js"></script>
     8     <style type="text/css">
     9         [v-cloak] {
    10           display: none;
    11         }
    12     </style>
    13 </head>
    14 <body>
    15     <div class="container">
    16         <div class="col-md-6 col-md-offset-3">
    17             <h1>Vue demo</h1>
    18             
    19             <div id="app">
    20             <table class="table table-hover ">
    21               <caption></caption>
    22               <thead>
    23                 <tr>
    24                   <th>序号</th>
    25                   <th>书名</th>
    26                   <th>作者</th>
    27                   <th>价格</th>
    28                   <th>操作</th>
    29                 </tr>
    30               </thead>
    31                 <tbody>
    32                     <tr v-cloak v-for="book in books"> 
    33                         <td>{{book.id}}</td>
    34                         <td>{{book.name}}</td>
    35                         <td>{{book.author}}</td>
    36                         <td>{{book.price}}</td>
    37                         <template v-if="book.id%2==0">
    38                              <td class="text-left">
    39                                      <button type="button" class="btn btn-success" @click="delBook(book)">删除</button>
    40                               </td>
    41                         </template>
    42                         <template v-else>
    43                                 <td class="text-left">
    44                                     <button type="button" class="btn btn-danger" @click="delBook(book)">删除</button>
    45                                 </td>
    46                         </template>
    47                     </tr>
    48                   </tbody>
    49 
    50             </table>
    51             
    52                 <div id="add-book">
    53 
    54                   <legend>添加书籍</legend>
    55 
    56                 <div class="form-group">
    57                       <label for="">书名</label>
    58                          <input type="text" class="form-control" v-model="book.name">
    59                 </div>
    60 
    61                 <div class="form-group">
    62                        <label for="">作者</label>
    63                        <input type="text" class="form-control" v-model="book.author">
    64                 </div>
    65 
    66                 <div class="form-group">
    67                     <label for="">价格</label>
    68                     <input type="text" class="form-control" v-model="book.price">
    69                 </div>
    70 
    71                 <button class="btn btn-primary btn-block" v-on:click="addBook()">添加</button>
    72                 </div>
    73 
    74             </div>
    75 
    76         </div>
    77     </div>
    78     <script type="text/javascript" src="1.js"></script>
    79 </body>
    80 </html>

     js

    new Vue({
        el: '#app',
        methods: {
            addBook: function() {
                //计算书的id
                this.book.id = this.books.length + 1;
                this.books.push(this.book);
                //将input中的数据重置
                this.book = {};
            },
            delBook: function(book) {
                var blength = this.books.length;
                this.books.splice(book.id-1, 1);
                for( var i = 0; i < blength ; i++) {
                    if(book.id < this.books[i].id) {    
                        this.books[i].id -= 1;
                    }
                }  
    
            }
        },
        data: {
            book: {
                id: 0,
                author: '',
                name: '',
                price: ''
            },
            books: [{
                id: 1,
                author: '曹雪芹',
                name: '红楼梦',
                price: 32.0
            }, {
                id: 2,
                author: '施耐庵',
                name: '水浒传',
                price: 30.0
            }, {
                id: '3',
                author: '罗贯中',
                name: '三国演义',
                price: 24.0
            }, {
                id: 4,
                author: '吴承恩',
                name: '西游记',
                price: 20.0
            }]
        }
     });
  • 相关阅读:
    Tomcat Jboss,jetty,Apache WebLogic区别与比较(阿里面试)
    zookeeper 负载均衡 核心机制-实现原理 包含ZAB协议(滴滴,阿里面试)
    六大Web负载均衡原理与实现
    LVS(Linus Virtual Server):三种IP负载均衡方式比较+另三种Web负载均衡方式
    JTable动态刷新数据
    java当中的定时器的4种使用方式
    java如何判断编码是否是utf8编码
    Java多线程-线程的同步与锁
    java中需要用equals来判断两个字符串值是否相等
    libcurl使用easy模式阻塞卡死等问题的完美解决---超时设置
  • 原文地址:https://www.cnblogs.com/chenzechuang/p/6217860.html
Copyright © 2011-2022 走看看