当前位置:   article > 正文

微信小程序学习记录——记事本Demo_微信开发者butoon事件在改变文本

微信开发者butoon事件在改变文本

微信小程序学习记录——记事本Demo

Demo框架

使用微信开发者工具打开项目后,可以看到小程序的大概框架,项目文件架下由Pages,utils,app.*等文件夹及文件组成。
Demo框架
其中,app.json文件用于配置整个小程序的页面路径,窗口风格,导航和全局属性。utils文件夹 下用于存放通用组件。Pages文件夹下的每个子文件夹代表一个页面。list文件夹为Demo的主页,用于呈现记录的事件列表,在app.json文件配置时需要把这个路径写在第一个。add文件为记录事件时的编辑页面。

功能实现

这个记事本Demo实现的功能如下:

  1. 点击按钮增加文本

  2. 点击文本列表中的文本进行更改

  3. 长按文件列表中的文本进行删除

  4. 可以进行本地存储

    list.wxml是文件的视图层,list.js是文件的逻辑层。在逻辑层中,Page.data可以注册数据,然后视图层就可以通过{{属性名}}进行调用,视图层中各个组件的事件也在Page中进行注册。Demo用到的组件为view的列表呈现,在wx:for使用时,{{index}},{{item}}都是默认的,代表循环时的下标和元素。

<!--pages/list.wxml-->
<block wx:for="{{mylist}}">
  <view>
    <view bindtap="change" data-id="{{index}}" bindlongtap="remove" id="{{item.time}}" data-content="{{item.content}}">{{item.content}}</view>
  </view>
</block>
<button bindtap="add">添加事件</button>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

事件绑定

blindtap为绑定的点击事件。bindlongtap为绑定的长按事件。在选定功能中,还需要每个文本对应的id和值。当视图层触发事件时,逻辑层对应的事件函数会收到一个事件对象,事件对象的currentTarget属性为当前组件的属性值集合,所以通过这个属性就可以拿到组件的id和值。组件属性data-*的值就对应currentTarget.dataset中对应的值。

增删改对应add,change,remove函数。

add:function(){
    wx.navigateTo({
      url: '../add/index',
    })
  },

  remove:function(e){
    let that = this
    wx.showModal({
      title: 'en~?',
      content:'确定要删除吗?',
      success:function(res){
        if(res.confirm){
          var arr = wx.getStorageSync('txt')
           arr.splice(e.currentTarget.dataset.id,1)
          wx.setStorageSync('txt', arr)
          that.onLoad()
        }else if(res.cancel) {
        } 
      }
    })
  },

  change:function(event){
  //console.log(event);  
  console.log(event.currentTarget.dataset.content); 
  wx.navigateTo({
    url: '../add/index?id=' + event.currentTarget.id + '&content=' +event.currentTarget.dataset.content,
  }) 
  },
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

数据传递

增和改函数都涉及到小程序页面间的数据传递,通过wx.navigateTo( )函数可以进行页面跳转和带参数跳转。在涉及跳转、刷新、数据初始化等操作时,都将使用到onload函数。带参数跳转时,在跳转页面的onLoad函数可通过一个options参数接到上一个页面传递过来的参数,属性名与传递时相同。
在刷新时,需要注意onLoad函数的作用域,不能直接用,需要引用指向

add页面注册onLoad函数如下

 onLoad: function (options) {
   console.log(this.data)
  this.setData({
    time:options.id,
    content:options.content
  });
  console.log(this.data)
},
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

add页面为编辑页面

<view><text>{{time}}</text></view
><view>
<input type="text" placeholder="请输入内容" bindinput="change" confirm-type="done" value="{{content}}"></input>
</view>
<view><button bindtap="additem">提交</button><button bindtap="cancel">取消</button></view>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

逻辑页面注册的事件函数如下

 change:function(e){
      this.setData({content:e.detail.value})
 },
 additem:function(){
      var input =[];
      var flag = true;
      var arr = wx.getStorageSync('txt');
      //判断是否是新增数据
      if(!this.data.time){
        this.setData({
          time:(new Date()).valueOf()
        })
      }
      if(arr){
        var curtime = this.data.time
        var content = this.data.content
        arr.forEach(function(item){
          console.log('debug')
          console.log(item)
          //console.log(item.time+"===="+curtime)
          if(item.time == curtime){
            item.content = content
            flag = false
            wx.setStorageSync('txt', arr)
          } 
        })
        ;
        if(flag){
         arr.push(this.data)
         wx.setStorageSync('txt', arr)} 
      }else{
         input.push(this.data)
         wx.setStorageSync('txt', input) 
      }
      wx.navigateBack()
    },
 cancel:function(){
   wx.navigateBack({
     complete: (res) => {},
   })
 },
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/218930
推荐阅读
相关标签
  

闽ICP备14008679号