成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Vue-todolist

A Loity / 2137人閱讀

摘要:完成成品基于的示例,麻雀雖小,五臟俱全技術(shù)棧功能描述使用說(shuō)明添加備忘錄輸入標(biāo)題后回車(chē)添加如果內(nèi)容為空或只有空格會(huì)清空,什么都不添加刪除備忘錄點(diǎn)擊標(biāo)題后面的叉完成備忘錄點(diǎn)擊標(biāo)題前面的復(fù)選框編輯備忘錄雙擊標(biāo)題進(jìn)入編輯模式取消編輯備忘錄按或者

vue-todolist 完成成品Vue-todolist

基于Vue的TodoList示例,麻雀雖小,五臟俱全

技術(shù)棧

Vue + localStorage + hash

功能描述(使用說(shuō)明)

添加備忘錄(輸入標(biāo)題后回車(chē)添加,如果內(nèi)容為空或只有空格會(huì)清空,什么都不添加)

刪除備忘錄(點(diǎn)擊標(biāo)題后面的叉)

完成備忘錄(點(diǎn)擊標(biāo)題前面的復(fù)選框)

編輯備忘錄(雙擊標(biāo)題進(jìn)入編輯模式)

取消編輯備忘錄(按ESC或者失去焦點(diǎn)時(shí))

完成編輯備忘錄(按回車(chē)鍵完成[如果內(nèi)容為空的時(shí)候會(huì)自動(dòng)刪除],此時(shí)也會(huì)調(diào)用到失去焦點(diǎn)事件)

一鍵完成所有備忘錄(點(diǎn)擊第一行的復(fù)選框)

過(guò)濾任務(wù),顯示全部,未完成,已完成的備忘錄(點(diǎn)擊全部,未完成,已完成按鈕)

清空已完成備忘錄(點(diǎn)擊清空已完成)

Vue相關(guān)知識(shí)點(diǎn)練習(xí): 加載環(huán)境

npm init -y
npm i -S underscore vue todomvc-app-css
vim index.html
復(fù)制格式化后的html
引入css
將英文標(biāo)題換成中文標(biāo)題
引入vue.js
新建vue的實(shí)例
寫(xiě)一個(gè)默認(rèn)的任務(wù):todoList: [{}]

el選項(xiàng)掛載DOM
  // 新建一個(gè)Vue的實(shí)例對(duì)象
  var todoapp = new Vue({
    // 掛載
    el: ".todoapp",
    // 數(shù)據(jù)
    data: {
         // 備忘錄數(shù)組
      todoList: [
        // 一個(gè)任務(wù)就是一個(gè)對(duì)象,text表示任務(wù)的名稱,checked為true表示已完成,false表示未完成
        {
          text: "學(xué)Vue",
          checked: false
        },
        {
          text: "學(xué)React",
          checked: false
        }
      ]
    },
    方法
    methods: {

    },
    // 計(jì)算屬性
    computed: {

    }
  })
屬性
data: {
      newTodo: "",
      todos: todoStorage.fetch(),
      editedTodo: null,
      beforeEditCache: "",
      visibility
    }
計(jì)算屬性(get,set)
computed: {
      //顯示任務(wù)總數(shù)量
      showTodos() {
        return this.todos.length > 0
      },
      //未完成
      activeCount() {
        return filters.active(this.todos).length
      },
      //已完成
      completedCount() {
        return filters.completed(this.todos).length
      },
      //判斷所有任務(wù)
      allDone: {
        get() {
          return this.activeCount === 0
        },
        set(value) {
          this.todos.map(todo => {
            todo.completed = value
          })
        }
      },
      //判斷
      filteredTodos() {
        return filters[this.visibility](this.todos)
      }
    }
//store.js的判斷獲取
(function(){
  var STORAGE_KEY = "todos"
  window.todoStorage = {
    fetch() {
      try {
        return JSON.parse(localStorage.getItem(STORAGE_KEY) || "[]")
      } catch(err) {
        return [];
      }
    },
    save(todos) {
      localStorage.setItem(STORAGE_KEY, JSON.stringify(todos))
    }
  }
})();
屬性觀察
 var filters = {
    all: todos => todos,
    active: todos => todos.filter(todo => !todo.completed),
    completed: todos => todos.filter(todo => todo.completed)
  }
  var visibility = location.hash.substr(location.hash.indexOf("/")+1)
  visibility = visibility === "" ? "all" : visibility

watch: {
      todos: {
        deep: true,
        handler: todoStorage.save//判斷當(dāng)前應(yīng)顯示的內(nèi)容
      }
    }
方法
methods: {
      addTodo() {
        this.newTodo = this.newTodo.trim()
        if (!this.newTodo) {
          return
        }
        this.todos.unshift({
          title: this.newTodo,
          completed: false
        })
        this.newTodo = ""
      },
      removeTodo(todo) {
        var index = this.todos.indexOf(todo)
        this.todos.splice(index, 1)
      },
      editTodo(todo) {
        this.editedTodo = todo
        this.beforeEditCache = todo.title
      },
      doneEdit(todo) {
        if (!this.editedTodo) {
          return;
        }
        this.editedTodo = null;
        todo.title = todo.title.trim()
        if (!todo.title) {
          this.removeTodo(todo)
        }
      },
      cancelEdit(todo) {
        if (this.editedTodo) {
          todo.title = this.beforeEditCache
          this.editedTodo = null
        }
      },
      removeCompleted() {
        this.todos = filters.active(this.todos)
      }
    }
指令
 directives: {
      focus: {
        update(el) {
          el.focus()
        }
      }
    }

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/51508.html

相關(guān)文章

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<