美文网首页Web 前端开发
使用Vue做一个简单的todo应用的三种方式

使用Vue做一个简单的todo应用的三种方式

作者: YM雨蒙 | 来源:发表于2018-06-22 11:11 被阅读2次

    1. 引用vue.js

    <!DOCTYPE html>
    <html>
    <head>
    <script src="http://vuejs.org/js/vue.js"></script>
      <meta charset="utf-8">
      <title>JS Bin</title>
    </head>
    <body>
      <div id="root">
        <input type="text" v-model="inputValue">
        <button @click="handlerAdd">提交</button>
        <ul>
          <li 
              v-for="(item,index) of lists" 
              :key="index" 
              @click="handlerDel(index)"
           >
            {{item}}
          </li>
        </ul>
      </div>
      
      <script>
        new Vue({
          el: '#root',
          data: {
            inputValue: '',
            lists: []
          },
          methods: {
            handlerAdd: function() {
              this.lists.push(this.inputValue);
              this.inputValue = '';
            },
            handlerDel: function(index) {
              this.lists.splice(index, 1);
            }
          }
        });
      </script>
    </body>
    </html>
    

    2. 全局组件注册

    <!DOCTYPE html>
    <html>
    <head>
    <script src="http://vuejs.org/js/vue.js"></script>
      <meta charset="utf-8">
      <title>JS Bin</title>
    </head>
    <body>
      <div id="root">
        <input type="text" v-model="inputValue">
        <button @click="handlerAdd">提交</button>
        <ul>
          <todo-item
            v-for="(item,index) of lists"
            :content = "item"
            :index = "index"
            :key = "index"
            @delete="handlerDel"
          >
          </todo-item>
        </ul>
      </div>
      
      <script>
        Vue.component('todoItem', {
          props: {
            content: String,
            index: Number
          },
          template: '<li @click="handlerClick">{{content}}</li>',
          methods: {
            handlerClick: function(){
              this.$emit('delete', this.index);
            }
          }
    
        });
    
        new Vue({
          el: '#root',
          data: {
            inputValue: '' ,
            lists: []
          },
          methods: {
            handlerAdd: function() {
              this.lists.push(this.inputValue);
              this.inputValue = '';
            },
            handlerDel: function(index) {
              this.lists.splice(index,1);
            }
          }
        });
      </script>
    </body>
    </html>
    

    3. vue-cli脚手架

    // Todo.Vue
    
    <template>
      <div>
        <input type="text" v-model="inputValue">
        <button @click="handlerAdd">提交</button>
        <ul>
          <todo-item
            v-for="(item,index) of lists"
            :key="index"
            :content="item"
            :index="index"
            @delete="handlerDel"
          ></todo-item>
        </ul>
      </div>
    </template>
    
    <script>
    import TodoItem from './components/todoItem'
    
    export default {
      data () {
        return {
          inputValue: '',
          lists: []
        }
      },
      methods: {
        handlerAdd () {
          this.lists.push(this.inputValue)
          this.inputValue = ''
        },
        handlerDel (index) {
          this.lists.splice(index, 1)
        }
      },
      components: {
        'todo-item': TodoItem
      }
    }
    </script>
    
    <style>
    
    </style>
    
    // TodoItem.vue
    
    <template>
      <li @click="handlerClick" class="item">{{content}}</li>
    </template>
    
    <script>
    export default {
      props: ['content', 'index'],
      methods: {
        handlerClick () {
          this.$emit('delete', this.index)
        }
      }
    }
    </script>
    
    <style scoped>
      ul,li {
        list-style: none;
      }
      .item {
        color: blueviolet;
      }
    </style>
    

    相关文章

      网友评论

        本文标题:使用Vue做一个简单的todo应用的三种方式

        本文链接:https://www.haomeiwen.com/subject/lbahyftx.html