【IMWeb训练营作业】Vue TodoList Demo

效果图:



HTML:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Vue Todo Demo</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, maximum-scale=1">
  <link rel="stylesheet" href="https://cdn.bootcss.com/normalize/6.0.0/normalize.min.css">
  <link rel="stylesheet" href="style.css">
</head>
<body>


<div class="main">
  <h3 class="big-title">添加任务</h3>
  <input type="text" class="task-input" placeholder="例如:吃饭睡觉打豆豆" v-model="todo" v-on:keyup.enter="addTodo">
  <ul class="task-count" v-show="list.length">
    <li>{{notCheckedLength}}个任务未完成</li>
    <li class="action">
      <a href="#all" v-bind:class="{active: visibility == 'all'}">所有</a>
      <a href="#unfinished" v-bind:class="{active: visibility == 'unfinished'}">未完成</a>
      <a href="#finished" v-bind:class="{active: visibility == 'finished'}">已完成</a>
    </li>
  </ul>
  <h3 class="big-title">任务列表</h3>
  <div class="task">
    <span class="no-task-tip" v-show="!list.length">还没有添加任何任务</span>
    <ul class="todo-list">
      <li class="todo" v-bind:class="{completed: item.isChecked, editing: item === editingTodo}" v-for="item in filteredList">
        <div class="view">
          <input type="checkbox" class="toggle" v-model="item.isChecked">
          <label v-on:dblclick="editTodo(item)">{{item.title}}</label>
          <button class="destroy" v-on:click="deleteTodo(item)">x</button>
        </div>
        <input
          type="text"
          class="edit"
          v-on:blur="editTodoFinished(item)"
          v-on:keyup.enter="editTodoFinished(item)"
          v-on:keyup.esc="cancelTodo(item)"
          v-focus="editingTodo === item"
          v-model="item.title"
        />
      </li>
    </ul>
  </div>
</div>


<script src="../lib/vue/vue.js"></script>
<script src="./app.js"></script>
</body>
</html>


app.js

var store = {
  fetch: function (key) {
    return JSON.parse(localStorage.getItem(key)) || [];
  },
  save: function (key, value) {
    localStorage.setItem(key, JSON.stringify(value))
  }
}


var filter = {
  all: function (list) {
    return list;
  },
  finished: function (list) {
    return list.filter(function (item) {
      return item.isChecked;
    })
  },
  unfinished: function (list) {
    return list.filter(function (item) {
      return !item.isChecked;
    })
  }
}


var list = store.fetch('todolist');


var vm = new Vue({
  el: '.main',
  data: {
    editingTodo: null,
    formerTitle: '',
    list: list,
    todo: '',
    visibility: 'all'
  },
  methods: {
    addTodo: function (e) {   // 添加任务
      this.list.push({
        title: this.todo,
        isChecked: false
      });
      this.todo = '';
    },
    deleteTodo: function (todo) {
      var index = this.list.indexOf(todo);
      this.list.splice(index, 1);
    },
    editTodo: function (todo) {
      this.formerTitle = todo.title;
      this.editingTodo = todo;
    },
    editTodoFinished: function (todo) {
      this.editingTodo = null;
      this.formerTitle = '';
    },
    cancelTodo: function (todo) {
      todo.title = this.formerTitle;
      this.editingTodo = null;
      this.formerTitle = '';
    }
  },
  computed: {
    notCheckedLength: function () {
      return this.list.filter(function (item) {
        return !item.isChecked
      }).length
    },
    filteredList: function () {
      return filter[this.visibility] ? filter[this.visibility](list) : list;
    }
  },
  directives: {
    focus: {
      update: function (el, binding) {
        if (binding.value == true) {
          el.focus();
        }
      }
    }
  },
  watch: {
    list: {
      handler: function (list) {
        store.save('todolist', list)
      },
      deep: true
    }
  }
});


function watchHashChange () {
  var hash = window.location.hash.slice(1);
  vm.visibility = hash || 'all';
}


watchHashChange();


window.addEventListener('hashchange', watchHashChange);



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值