Vue.js实现备忘录功能

本文实例为大家分享了Vue.js实现备忘录的具体代码,供大家参考,具体内容如下

效果展示:

Vue.js实现备忘录功能

html代码:

<!DOCTYPE html>
<html>
 <head>
 <meta charset=\"utf-8\">
 <!-- 移动设备设置 -->
 <meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\">
 <title>记事本</title>
 <link rel=\"stylesheet\" type=\"text/css\" href=\"css/noteUI.css\" >
 <!-- vue核心框架 -->
 <script src=\"vue/vue.js\" type=\"text/javascript\" charset=\"UTF-8\"></script>
 <script src=\"vue/vue-resource.min.js\" type=\"text/javascript\" charset=\"UTF-8\"></script>
 </head>
 <body>
 
 <div id=\"app\">
 <!-- 一般用于头部 -->
 <header>
 <h1>备忘录<span class=\"right\">{{now}}</span></h1>
 </header>
 <section>
 <!-- 多行文本 -->
 <!-- 视图传数据 -->
 <!-- v-model=\"diary\"双向数据绑定 -->
 <textarea v-model=\"diary\" style=\"width: 100%;height: 200px;\" placeholder=\"写日记是一个好习惯\">
 </textarea>
 <!-- @click=\'finished\'绑定methods属性中的方法 -->
 <button @click=\"finished\" class=\"finish\">完成</button>
 </section>
 <ul>
 <!-- 循环遍历data中的noteooks属性B,每次循环都赋值给nb -->
 <!-- v-for=\"(数组值,数组下标) in noteBooks\"-->
 <li v-for=\"(nb,i) in noteBooks\">
  <!--nb.txt类似对象访问-->
  <!-- v-html=\"nb.txt\"绑定html代码 -->
  <p v-html=\"nb.txt\">写日记是一个好习惯</p>
  <div class=\"btn_ground\">
  <button @click=\"del\" type=\"button\" class=\"del left\">删除</button>
  <!-- v-text=\"nb.time\" 绑定文本等价于 {{nb.time}}-->
  <span class=\"time\" v-text=\"nb.time\"></span>
  <button @click=\"upDate(i)\" type=\"button\" class=\"update right\">修改</button>
  </div>
 </li>
 </ul>
 </div>
 <footer>
 版权所有 zk
 </footer>
 <script src=\"noteBook.js\" type=\"text/javascript\" charset=\"UTF-8\"></script>
 
 </body>
</html>

CSS代码:

*{
 margin: 0;
 padding:0;
}
header,#app,footer{
 margin:0 8px;
}
header h1{
 color: #FF4500;
 font-weight: normal;
 font-size: 24px;
 padding-top: 10px;
 padding-bottom: 4px;
 border-bottom: 1px solid #ccc;
 margin-bottom: 4px;
}
 
#app textarea{
 width: 100%;
 height: 200px;
 border: none;
 border-bottom: 1px solid #ccc;
 padding: 8px 4px;
}
button{
 padding: 4px;
 background-color: #fff;
 border: 1px solid #ccc;
 border-radius: 4px;
}
/* position: relative;没有脱离正常流 */
/* relitive相对于自己在流中的元素定位 */
/* relative一般用于位置微调,或者让absolute参考自己定位 */
#app section{
 position: relative;
 
}
.finish{
 position: absolute;
 background-color: limegreen;
 bottom: 8px;
 right: 4px;
}
#app ul{
 margin-top: 8px;
}
#app li{
 border-bottom: 1px solid #CCCCCC;
 margin-bottom: 8px;
}
.left{
 float: left;
}
.right{
 float: right;
}
/* 组合选择器 */
 
header span.right{
 font-size: 14px;
 padding-top:13px;
}
.btn_ground{
 height: 30px;
 margin-top: 4px;
}
.del{
 background-color: orangered;
 color: #FFFFFF;
}
.update{
 background-color: royalblue;
 color: #FFFFFF;
}
footer{
 color: #999;
 text-align: center;
 font-size: 12px;
}

js代码:

function getNowString(){
 var now=new Date()
 var arr=[\'日\',\'一\',\'二\',\'三\',\'四\',\'五\',\'六\']
 
 return now.toLocaleDateString()
  +\'星期\'
 +arr[now.getDay()]
}
 
var App = new Vue({
 el:\'#app\',
 data:{
 now:getNowString(),
 noteBooks:[
 {
 time:\'2019/6/17 星期一\',
 txt:\'今天天气不好\'
 },{
 time:\'2019/6/18 星期二\',
 txt:\'今天学习<i style=\"color:red\">Adidas\'
 }
 ],
 diary:\'\',
 index:\'-1\'
 },
 methods:{
 finished:function(){
 //!App.diary是考虑App.diary=null的情况
 if(!App.diary||0==App.diary.length)return
 
 if(-1==App.index){
 //存入noteBooks中
 //unshift插入到数组首位
 App.noteBooks.unshift({
  time:App.now,
  txt:App.diary
 })
 }else{
 //修改
 App.noteBooks[App.index]={
  time:App.now,
  txt:App.diary
 }
 App.index=-1
 }
 App.diary = \'\'
 App.now=getNowString()
 },
 del:function(i){
 // 删除 splice(起始下标,删除个数)
 App.noteBooks.splice(i,1)
 },
 upDate:function(i){
 var nb=App.noteBooks[i]
 App.diary=nb.txt
 App.now = nb.time
 //App.index 为-1表示新增,其他就是修改
 App.index=i
 }
 }
})

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容