首页 > 其他分享 >vuecli练习之添加一个todo操作

vuecli练习之添加一个todo操作

时间:2022-11-10 14:13:39浏览次数:39  
标签:vuecli title color todo 练习 1px import border

涉及到三个 组件

 

header

<template>
     <div class="todo-header">
        <input type="text" placeholder="请输入你的任务名称,按回车键确认"  @keyup.enter="add"/>
     </div>
</template>

<script>
import { nanoid } from "nanoid";
export default {
    name:"MyHeader",
    methods: {
        add(e){
            console.log(this)
            //如果输入项为空则停止执行
            if (!e.target.value.trim())  return  alert("输入不能为空")
            // if (!this.title.trim())  return  alert("输入不能为空")
              
           

            // 将用户的输入包装成一个todo对象
            const todoObj={id:nanoid(),title:e.target.value,done:false}
            // console.log(todoObj)

            this.addTodo(todoObj)//添加加工后的todoObj

            e.target.value=""//清空输入
        }
    },
    props:[
        "addTodo"//将加工好的函数传过来
    ]
}
</script>

<style>
    /*header*/
    .todo-header input {
    width: 560px;
    height: 28px;
    font-size: 14px;
    border: 1px solid #ccc;
    border-radius: 4px;
    padding: 4px 7px;
    }

    .todo-header input:focus {
    outline: none;
    border-color: rgba(82, 168, 236, 0.8);
    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
    }
</style>

app

<template>
    <div id="app">
      <div class="todo-container">
        <div class="todo-wrap">
          
          <MyHeader :addTodo="addTodo"></MyHeader>

          <MyList :todos="todos"></MyList>
          
          <MyFooter></MyFooter>
        </div>
      </div>
    </div>
</template>

<script>
import MyFooter from './components/MyFooter.vue'
import MyHeader from './components/MyHeader.vue'
// import MyItem from './components/MyItem.vue' item为list的子组件
import MyList from './components/MyList.vue'
// import School from './components/School.vue'
export default {
  name: 'app',
  components: {
    MyHeader,
    MyFooter,
    
    // MyItem,
    MyList
    // School
  },
  data() {
        return {
            todos:[
                {id:"001",title:"吃饭",done:true},
                {id:"002",title:"抽烟",done:false},
                {id:"003",title:"烫头",done:true},
            ]
        }
    },
  methods: {
    addTodo(todoObj){//添加一个toido
      this.todos.unshift(todoObj)
    }
  },
}
</script>

<style>
  /*base*/
body {
  background: #fff;
}

.btn {
  display: inline-block;
  padding: 4px 12px;
  margin-bottom: 0;
  font-size: 14px;
  line-height: 20px;
  text-align: center;
  vertical-align: middle;
  cursor: pointer;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
  border-radius: 4px;
}

.btn-danger {
  color: #fff;
  background-color: #da4f49;
  border: 1px solid #bd362f;
}

.btn-edit {
  color: #fff;
  background-color: lightgreen;
  border: 1px solid green;
  margin-right: 5px;
}

.btn-danger:hover {
  color: #fff;
  background-color: #bd362f;
}

.btn-edit:hover {
  color: #fff;
  background-color: green;
}

.btn:focus {
  outline: none;
}

.todo-container {
  width: 600px;
  margin: 0 auto;
}
.todo-container .todo-wrap {
  padding: 10px;
  border: 1px solid #ddd;
  border-radius: 5px;
}
</style>

list

<template>
      <ul class="todo-main">
        <MyItem v-for="(todoObj) in todos" :key="todoObj.id" :todo="todoObj"></MyItem>
    </ul>
</template>

<script>
import  MyItem  from "./MyItem";
export default {
    name:"MyList",
    components:{MyItem},
    /* data() {
        return {
            todos:[
                {id:"001",title:"吃饭",done:true},
                {id:"002",title:"抽烟",done:false},
                {id:"003",title:"烫头",done:true},
            ]
        }
    }, */
    props:[
        "todos"
    ]
}
</script>

<style>
    /*main*/
    .todo-main {
    margin-left: 0px;
    border: 1px solid #ddd;
    border-radius: 2px;
    padding: 0px;
    }

    .todo-empty {
    height: 40px;
    line-height: 40px;
    border: 1px solid #ddd;
    border-radius: 2px;
    padding-left: 5px;
    margin-top: 10px;
    }
</style>

 

标签:vuecli,title,color,todo,练习,1px,import,border
From: https://www.cnblogs.com/xiaobaizitaibai/p/16876832.html

相关文章

  • JDBC练习-登录案例
    需求:1.通过键盘录入用户名和密码2.判断用户是否登录成功select*fromuserwhereusername=""andpassword="";如果这个sql有查询结果则成功反之则失败步骤:1......
  • vuecli之todo练习1静态资源html
    首先建立静态资源htmlApp。vue<template><divid="app"><divclass="todo-container"><divclass="todo-wrap"><MyHeader>......
  • 牛客练习赛105
    切蛋糕的贝贝题意:将多边形一个蛋糕切成6份,使得面积之比为1:1:4:5:1:4(顺序可以打乱),只有两种切法,一种是将过外接圆的多边形的对角线,第二种是从多边形的中心和顶点的连线,先......
  • 2022/11 LeetCode练习
    ......
  • 机器学习练习数据哪里找?两行代码搞定!
    初学者学习机器学习的时候,经常会找不到练习的数据,实际上scikit-learn内置了很多可以用于机器学习的数据,可以用两行代码就可以使用这些数据。一、自带数据集自带的小的数据集......
  • 【MySQL】基础练习题
    习题参考:https://blog.csdn.net/qq_41936662/article/details/80393172数据库准备建表语句学生表studentCREATETABLE`student`(`s_id`varchar(20)NOTNULL,......
  • 24个适合初学者练习的CSS 和 Javascript 动画效果案例
    英文|https://niemvuilaptrinh.medium.com/24-css-javascript-animation-effects-a4c5b6e98a59翻译|杨小爱在昨天的文章中,我跟大家分享了《​​40个适合初学者练习HTML......
  • 40个适合初学者练习HTML和CSS的案例
    英文|https://niemvuilaptrinh.medium.com/40-html-css-projects-for-beginner-2021-5bd01ff62361翻译 |杨小爱使用多个库进行网页设计会在一定程度上增加页面加载时间,......
  • 在线k8s练习环境,Killercoda和play-with-k8s
    最近发现了两款比较好的在线kubernetes操练环境,killercoda和play-with-k8s。尽管手头上已经有了ECS、虚拟机,不过这两款在线环境胜在方便快捷。让我们体验下吧!https://kill......
  • 练习实现用户增删改查
    classUser_massage:def__init__(self,name,age,hobby):self.name=nameself.age=ageself.hobby=hobbydefget_massage(s......