移动软件开发----------对备忘录部分实现添加文字和删除文字功能
**
移动软件开发----------对备忘录部分实现添加文字和删除文字功能
**
代码:https://github.com/nata-skate/clock
得到如图效果
- 页面布局
页面布局也就是wxml文件,我们给上述界面做一个划分,大致分为三个部分,第一部分为最上方日期显示;第二部分为第二栏的输入框,第三部分为下面的信息框。
在整体上我们用一个大的view,定义为类container
container我们定义其类属性为
.container{
background-color: white;
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
}
背景色设置为白色,宽度100%,弹性布局,竖直排列子项。column代表垂直。
(1) 第一层
在第一层我们用一个view框住一个text,里面显示today日期,利用数据绑定绑定主js中的数据(双大括号代表数据绑定的意思,也就是里面是变量名,他会同步js中的数据,例如这里绑定today,则我们再js代码中可以改变today的值,这里会不断更新数据。)
{{Today}} 对应的wxss代码如下:
.today{
font-size: 10px;
}
将其字体设置好即可
(2) 第二层
第二层我们用一个view包含两个控件,
一个是image,image需要绑定图片源。
另一个是input输入框,输入框需要绑定两个函数1)输入信息触发bindinput='AddInput’此时输入一个字符,我们应该更新以下输入框的内容2)确定触发函数bindconfirm='AddConfirm’此函数应该触发保存信息,并创建一个新的备忘。输入框的value我们数据绑定到js中的input数据。placeholder代表数据为空时显示的字符,也就是提示。
对应的wxss代码:
.additem{
width: 100%;
}
.add{
display: flex;
flex-direction: row;
border: 1rpx solid #e0e0e0;
border-radius: 10rpx;
box-shadow: 0 0 5rpx #e0e0e0;
margin-bottom: 30rpx;
margin-left: 30rpx;
margin-right: 30rpx;
margin-top: 30rpx;
padding: 20rpx;
}
.plus{
width: 41rpx;
height: 41rpx;
padding-right: 20rpx;
}
.InputAdd{
padding-left: 20rpx;
font-size: 28rpx;
}
(3) 第三层
第三层我们用一个view包括所有的信息,然后再用循环把所有的信息遍历,每一条信息横排,包括复选框(代表是否完成)、信息(反应备忘的内容)、删除图标(删除信息内容)
1)其中我们再wx:for中需要回馈id我们让id等于index的值,这样在点击事件函数中就能获取到id信息就知道时数组的第几条信息了。,然后为他绑定点击函数toggleTodoHandle,如果点击某一条信息我们就让其变为完成状态。;
2)复选框的类型 type属性我们用了一个问号表达式item.completed ? ‘success’ : 'circle’代表如果?前面的表达式为true则其值为冒号前的表达式或者字符如果未false则未冒号后面的字符。所以此处的意思时如果已经完成我们就将icon类型设置为成功,如果未完成则设置未圆圈。
{{item.description}}
其wxss代码如下:
.todo-today{
font-size: 15px;
padding-left: 20rpx;
padding-right: 20rpx;
margin-left: 20rpx;
margin-right: 20rpx;
vertical-align: center;
margin: 2px;
}
.todo-today1{
width: 100%;
}
.today-item{
display: flex;
flex-direction: row;
padding: 20rpx;
background-color: #00a2ea;
border: 10rpx solid white;
border-radius: 20rpx;
}
.itemdescriptiont{
flex: 1;
font-size: 40rpx;
color: white;
}
.itemdescriptiontcompleted{
flex: 1;
text-decoration: line-through;
font-size: 40rpx;
color: white;
}
.itemremove{
cursor: pointer;
padding-top: 7rpx;
}
.itemcheckbox{
margin-right: 20rpx;
}
2.代码端
此部分代码主要设计几个函数
onLoad函数(初始化数据);删除数据;增添数据;输入框输入数据触发
;保存数据到本地 ;调取本地数据
- 数据
在page-data中定义了全局数据
总共三个数据 :备忘录列表、日期、输入框信息
Page({
/**
页面的初始数据
*/
data: {
TodayList:[],
Today:"",
input:""
},
})
(1)数据保存到本地与获取本地数据
/**
存储列表数据函数
*/
save:function(){
wx.setStorageSync(‘TodayList’, this.data.TodayList);
},
loadData:function(){
var todo = wx.getStorageSync(‘TodayList’);
if(todo){
this.setData({
TodayList: todo
});
}
},
(2) 数据增加
利用数组的push函数。
/**
增加一条记录
*/
AddConfirm:function(e){
var that = this;
var todo = this.data.TodayList;
todo.push({description:this.data.input,completed:false})
//更新数据
that.setData({TodayList:todo,input:’’});
//输出日志信息
console.log(this.data.TodayList)
//保存记录到本地
this.save();
},
(3) 删除数据
利用数组的splice方法。
/**
清除一条记录
/
removeTodoHandle:function(e){
var todo = this.data.TodayList;
var index = e.currentTarget.id;
//删除数据
todo.splice(index,1);
console.log(todo);
//设置数据
this.setData({
TodayList:todo
});
this.save();
},
4.更改任务状态
/**
更改任务状态
*/
toggleTodoHandle: function (e) {
var todo = this.data.TodayList;
//获取e传输的id
var index = e.currentTarget.id;
//改变complete状态
todo[index].completed = !todo[index].completed;
//更改数据
this.setData({
TodayList:todo
});
this.save();
},
5. 生命周期函数
此函数主要用来更新时间,可以看一下date类型
然后获取本地数据。
/**
生命周期函数–监听页面加载
*/
onLoad: function (options) {
//计算日期
var that = this;
var date1 = new Date;
var date2 = new Array(“星期日”,“星期一”, “星期二”, “星期三”, “星期四”, “星期五”, “星期六”);
var Today;
Today = date1.getFullYear() + ‘-’ + (date1.getMonth() + 1) + ‘-’ + date1.getDate() + ’ ’ + (date2[date1.getDay()]);
var TodayStorage = wx.getStorageSync(“Today”);
if (TodayStorage != Today){
wx.setStorageSync(“Today”, Today);
}
that.setData({
Today:Today
});
//获取本地存储日志
this.loadData();
1
2