記事本-小程序

需求:
能夠添加筆記,并更新記事時(shí)間球散;
數(shù)據(jù)暫存在小程序中的Storage;


image.png

image.png

image.png

頁(yè)面結(jié)構(gòu),兩個(gè)頁(yè)面蕉堰,列表頁(yè)和添加頁(yè)凌净;
思路:
1.頁(yè)面首先加載列表頁(yè),數(shù)據(jù)的渲染先從storage獲取判斷屋讶,取到時(shí)間和內(nèi)容冰寻,加載在頁(yè)面結(jié)構(gòu)中
2.給列表頁(yè)的內(nèi)容和添加按鈕添加點(diǎn)擊時(shí)間bindtap,跳轉(zhuǎn)到add頁(yè)面皿渗,內(nèi)容再次編輯點(diǎn)擊時(shí)要傳入一個(gè)id給add頁(yè)面斩芭,所以為了區(qū)分列表的狀態(tài),給每一個(gè)列表添加一個(gè)id屬性乐疆,傳入到add頁(yè)面中划乖,add頁(yè)面接收可通過(guò)onload加載中獲取
3.add頁(yè)需要做兩個(gè)事情,一是判斷是新增加內(nèi)容還是再次編輯挤土,二是提交內(nèi)容到stroage中命名的txt中琴庵,取消則跳轉(zhuǎn)返回即可
實(shí)現(xiàn):
list結(jié)構(gòu)和樣式:

<view class='page'>
  <!-- 每一條文字  -->
  <scroll-view class='lists'>
      <block wx:for="{{lists}}">
        <view class='list-i'>
          <view class='content' bindtap='edit' data-id="{{item.id}}">{{item.content}}</view>
          <view class='time'> 創(chuàng)建時(shí)間:{{item.time}}</view>
        </view>
      </block>
  </scroll-view>
  <!-- 添加文字按鈕  -->
  <view class='add' bindtap='add'>
    <image src='../../img/edit.png'></image>
  </view>
</view>

樣式:
.page{position: relative;}
.lists{
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
}
.list-i{
  width: 100%;
  height: 200rpx;

  background: #eee;
  display: flex;
  margin:10rpx 0;
  flex-direction: column;
}
.content{height: 110rpx;border-bottom: 1px solid red;line-height: 110rpx;padding: 0 20rpx;}
.time{
  color: #1674d4;
  line-height: 90rpx;
  padding: 0 20rpx;
}
.add{
  width: 100rpx;
  height: 100rpx;
  position: absolute;
  right: 80rpx;
  bottom: 80rpx;
  border: 1px solid #ccc;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #efefef;
}
.add image{
  width: 40rpx;
  height: 40rpx;
}

list js邏輯:


var time=require("../../utils/util")
Page({

  data: {
    lists:[
      {
        content:"hello",
        time:Date.now(),
        id:1
      }
    ]
  },
  onLoad(){
    initData(this);
  },
  onShow(){
    initData(this)
  },
  add(){
    wx.navigateTo({
      url: '../add/add',
    })
  },
  edit(e){
    // console.log(e);
    var id=e.target.dataset.id;
    wx.navigateTo({
      url: '../add/add?id='+id,
    })
  },


})

function initData(page){
  var arr = wx.getStorageSync('txt');
  if(arr.length){
    arr.forEach((item,i)=>{
      var t=new Date(Number(item.time));
      item.time = time.formatTime(t);
    })
    page.setData({
      lists:arr  //放入data中
    })
  }
}

add結(jié)構(gòu)和樣式:

<view class='page'>
  <view class='page-t'>
    <input type='text' placeholder='請(qǐng)輸入文字' value='{{content}}' bindinput='change'/>
  </view>
  <view class='btns'>
    <view class='cancel' bindtap='cancel'>取消</view>
    <view class='sure' bindtap='sure'>確定</view>
  </view>
</view>
樣式:
.page{display: flex;flex-direction: column}
.page-t{width: 100%;height: 90%}
.btns{flex: 1;display: flex;align-items: center;justify-content: space-around;background: #f88}

add js邏輯

Page({

  data: {
    
  },
  /**
  * 生命周期函數(shù)--監(jiān)聽(tīng)頁(yè)面加載
  */
  onLoad: function (e) {
    var id=e.id;    
    if(id){//如果id存在,處于邊界狀態(tài)仰美,獲取信息迷殿,不存在,設(shè)置一個(gè)id
      getData(id,this);
    }else{
      this.setData({
        id:Date.now()
      })
    }
  },
  change(e){
    //獲取輸入框里的值
    var val=e.detail.value;
    this.setData({
      content:val
    })
  },
  cancel(){
    wx.navigateBack()
  },
  sure(){
    var re=/^\s*$/g;
    //判斷輸入框的值不能為空或者空字符咖杂;
    if(!this.data.content||re.test(this.data.content)){
      return;
    }
    //點(diǎn)解確定之前更新時(shí)間
    this.setData({
      time:Date.now()
    })
    //把信息取到庆寺,放入storage中
    setValue(this);
    //返回前面的頁(yè)面
    wx.navigateBack()
  }

})
function getData(id,page){
  var arr=wx.getStorageSync('txt');
  
    arr.forEach((item)=>{
      if(item.id==id){  //確定是否編輯當(dāng)前信息
        page.setData({
          id:item.id,
          content:item.content
        })
      }
    })
  
}
//設(shè)置存儲(chǔ)信息
function setValue(page){
  var arr=wx.getStorageSync('txt');
  var data=[],flag=true;//設(shè)置一個(gè)空數(shù)組,不管是再次編輯還是新增加诉字,都放在數(shù)組里
  //判斷是新增內(nèi)容還是再次編輯? 取到信息放到stroage中懦尝,
  if(arr.length){
    arr.forEach((item)=>{
      if(item.id==page.data.id){
        item.time=Date.now();
        item.content=page.data.content;
        flag=false;
      }
      data.push(item)
    })
  }
  //新增加內(nèi)容
  if(flag){
    data.push(page.data)
  }

  wx.setStorageSync('txt', data)
}

util.js 時(shí)間日期格式封裝,返回一個(gè)對(duì)象奏窑,調(diào)用obj.formatTime(參數(shù))給到這種格式:
image.png
const formatTime = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()
  return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}

const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : '0' + n
}

module.exports = {
  formatTime: formatTime
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末导披,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子埃唯,更是在濱河造成了極大的恐慌撩匕,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件墨叛,死亡現(xiàn)場(chǎng)離奇詭異止毕,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)漠趁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門扁凛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人闯传,你說(shuō)我怎么就攤上這事谨朝。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵字币,是天一觀的道長(zhǎng)则披。 經(jīng)常有香客問(wèn)我,道長(zhǎng)洗出,這世上最難降的妖魔是什么士复? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮翩活,結(jié)果婚禮上阱洪,老公的妹妹穿的比我還像新娘。我一直安慰自己菠镇,他們只是感情好冗荸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著辟犀,像睡著了一般俏竞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上堂竟,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天魂毁,我揣著相機(jī)與錄音,去河邊找鬼出嘹。 笑死席楚,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的税稼。 我是一名探鬼主播烦秩,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼郎仆!你這毒婦竟也來(lái)了只祠?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤扰肌,失蹤者是張志新(化名)和其女友劉穎抛寝,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體曙旭,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盗舰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了桂躏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钻趋。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖剂习,靈堂內(nèi)的尸體忽然破棺而出蛮位,到底是詐尸還是另有隱情较沪,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布土至,位于F島的核電站购对,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏陶因。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一垂蜗、第九天 我趴在偏房一處隱蔽的房頂上張望楷扬。 院中可真熱鬧,春花似錦贴见、人聲如沸烘苹。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)镣衡。三九已至,卻和暖如春档悠,著一層夾襖步出監(jiān)牢的瞬間廊鸥,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工辖所, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惰说,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓缘回,卻偏偏與公主長(zhǎng)得像吆视,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子酥宴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理啦吧,服務(wù)發(fā)現(xiàn),斷路器拙寡,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,104評(píng)論 25 707
  • 我一直以來(lái)都在區(qū)別對(duì)待自己的偶像授滓。 都說(shuō)愛(ài)到深處自然黑,對(duì)雙導(dǎo)(梁歡)倒庵,我可以毫無(wú)顧忌的去黑褒墨。但是對(duì)赤世代,我不敢...
    顧音麟閱讀 352評(píng)論 0 0
  • 1. 鷹眼 鷹眼是淘寶的分布式日志跟蹤系統(tǒng)擎宝,通過(guò)收集和分析在不同的網(wǎng)絡(luò)調(diào)用中間件上的日志埋點(diǎn)郁妈,可以得到同一次請(qǐng)求上...
    Shirley_奮進(jìn)中的蝦米閱讀 493評(píng)論 0 1