0-demo

demo.wxml

<!--pages/demo/demo.wxml-->
<text>{{10+20}}</text>
<view>{{10>20 ? 'aaaa':'bbbb'}}</view>

<view>{{myName}}</view>

<view id="my-{{ids[0]}}">aaaaaa</view>
<view id="my-{{ids[1]}}">bbbbbb</view>
<view id="my-{{ids[2]}}">cccccc</view>

<view wx:for="{{list}}" wx:key="index">
{{item}}-----{{index}}
</view>

<view wx:for="{{list}}" wx:for-item="myItem" wx:for-index="myIndex" wx:key="myIndex">
{{myItem}}-----{{myIndex}}
</view>

<view wx:if="{{isCreated}}">我是动态创建和删除1111111</view>
<view wx:else>我是动态创建和删除22222222</view>

<view hidden="{{isHidden}}">我是动态隐藏和显示</view>

<button type="primary" bindtap="handleTap">click1</button>
<button type="primary" catchtap="handleTap">click2</button>

demo.js

Page({

  /**
   * 页面的初始数据
   */
  data: {
    myName:"张三",
    ids:["AAA","BBB","CCC"],
    list:["唱","跳","Rap","打篮球"],
    isCreated:false,
    isHidden:false    
  },

  handleTap(){
    this.setData({
      myName:"李四",
      isCreated:!this.data.isCreated,
      isHidden:!this.data.isHidden
    })
  }
  ......其他  
})

1-todolist

todolist.wxml

<view class="box">
  <input type="text" bindinput="handleInput" value="{{mytext}}"/>
  <button size="mini" bindtap="handleAdd">添加</button>
</view>

<view wx:if="{{datalist.length>0}}">
  <view wx:for="{{datalist}}" wx:key="index" class="list">
    <text>{{item}}</text>
    <button size="mini" bindtap="handleDelete" data-myid="{{index}}">删除</button>
  </view>
</view>

<view wx:else>暂无待办事项</view>

todolist.wxss

input{
  border: 1px solid black;
  height: 50px;
  line-height: 50px;
  border-radius: 10px;
}

.box{
  display: flex;
  flex-direction: row;
}

.list{
  display: flex;
  flex-direction: row;
  justify-items: between;
}

.list text{
  width: 200px;
}

todolist.js

// pages/1-todolist/1-todolist.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    mytext:"",
    datalist:["111","222","333"]
  },

  handleInput(event){
    // console.log(event.detail.value)
    this.setData({
      mytext:event.detail.value
    })
  },

  handleAdd(){
    this.setData({
      datalist:[...this.data.datalist,this.data.mytext],
      mytext:""
    })
  },

  handleDelete(event){
    // console.log(event.target.dataset.myid)
    // console.log(this.data.datalist.splice(event.target.dataset.myid,1))
    this.data.datalist.splice(event.target.dataset.myid,1)
    this.setData({
      datalist:this.data.datalist
    })
  }
})

2-highlight

highlight.wxml

<view class="box">
  <view wx:for="{{datalist}}" wx:key="index" 
        bindtap="handleTap" data-myid="{{index}}" 
        class="item {{current === index?'active':''}}"
  > 
    <text>{{item}}</text>
  </view>
</view>

highlight.wxss

.box{
  display: flex;
  flex-direction: row;
}

.box .item{
  flex:1;
  text-align: center;
}

.active{
  color:red;
}

highlight.js

Page({

  /**
   * 页面的初始数据
   */
  data: {
    datalist:["衣服","裤子","电子"],
    current:0
  },

  handleTap(event){
    // console.log(event.target.dataset.myid)
      this.setData({
        current:event.currentTarget.dataset.myid
      })
  }
})

3-rpx

rpx.wxml

<view class="box"></view>

rpx.wxss

.box{
  width: 750rpx;
  height: 400rpx;
  background-color: yellow;
}

4-wxs

wxs.wxml

<wxs src="./date.wxs" module="handleDate"/>
<wxs src="./goodFilter.wxs" module="goodFilter"/>
<text>{{handleDate(startTime)}}</text>
 
<view>
  <input bindinput="handleInput"/>
  {{mytext}}
  <view wx:for="{{goodFilter(goodsList,mytext)}}" wx:key="index">
    {{item}}
  </view>
</view>

wxs.wxss

input {
  border:2px solid black;
}

date.wxs

function handleDate(time){
  var odate = getDate(time)
  // console.log(odate)
  return odate.getFullYear() + "-" + (odate.getMonth()+1) + "-" + odate.getDate()
}

module.exports = handleDate

goodFilter.wxs

function goodFilter(goodsList,mytext){
  return goodsList.filter(function(good) {
    return good.indexOf(mytext)>-1
  })
}

module.exports = goodFilter

wxs.js

Page({

  /**
   * 页面的初始数据
   */
  data: {
    mytext:"",
    startTime: 1624676059976,
    goodsList:["aaa","abc","ddd","acc","bcc","abd","bcd","acd"]
  },

  handleInput(event){
    this.setData({
      mytext:event.detail.value
    })
  }
})

5-request

request.wxml

<button type="primary" bindtap="handleAjax">ajax</button>

<view wx:for="{{datalist}}" wx:key="index" class="item">
  <image src="{{item.img}}" mode="widthFix"/>
  <view>{{item.nm}}</view>
</view>

request.wxss

.item{
  overflow: hidden;
  padding:10rpx;
}
.item image{
  width: 200rpx;
  float: left;
}

request.js

Page({

  /**
   * 页面的初始数据
   */
  data: {
    datalist:[]
  },

  handleAjax(){
    wx.request({
      url:'https://i.maoyan.com/api/mmdb/movie/v3/list/hot.json?ct=%E7%99%BD%E9%93%B6&ci=363&channelId=4',
      method:"get",
      data:{
        
      },
      success:(res)=>{
        // console.log(res.data.data.hot)
        this.setData({
          datalist:res.data.data.hot
        })
      },
      fail:()=>{

      }
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.handleAjax()
  }
})

6-image

image.wxml

<image src="https://res.wx.qq.com/wxdoc/dist/assets/img/0.4cb08bb4.jpg" mode="widthFix"></image>

image.wxss

image{
  width: 300px;
  height: 200px;
}

7-swiper

swiper.wxml

<!--pages/7-swiper/7-swiper.wxml-->
<button bindtap="handleAjax" type="primary">ajax-swiper</button>

<swiper indicator-dots="{{true}}" circular="{{true}}" autoplay="{{true}}" interval="{{3000}}">
  <swiper-item wx:for="{{datalist}}" wx:key="index">
    <image src="{{item.image_url}}" mode="widthFix" style="width: 100%;"/>
  </swiper-item>
</swiper>

swiper.wxss

swiper{
  height: 314rpx;
}

swiper.js

// pages/7-swiper/7-swiper.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    datalist:[]
  },

  handleAjax(){
    wx.request({
      url: 'https://api.juooo.com/home/index/getClassifyHome?city_id=0&abbreviation=&version=6.1.40&referer=2',
      success:(res)=>{
        //  console.log(res.data.data.slide_list) 
         this.setData({
          datalist:res.data.data.slide_list
         })
      }
    })
  }
})

8-scrollview

scrollview.wxml

<!--pages/8-scrollview/8-scrollview.wxml-->
<!-- <view style="height: 200px;background-color: yellow;">
  轮播
</view> -->
<view>水平方向</view>
<scroll-view class="box_horizontal" scroll-x="{{true}}" enable-flex="{{true}}"
bindscrolltolower="handleRight">
  <view class="item_horizontal">aaaaaa</view>
  <view class="item_horizontal">bbbbbb</view>
  <view class="item_horizontal">cccccc</view>
  <view class="item_horizontal">dddddd</view>
</scroll-view>

<view>垂直方向</view>
<scroll-view class="box" scroll-y="{{true}}"  
bindscrolltolower="handlescrolltolower" refresher-enabled="{{true}}" 
bindrefresherrefresh="handleRefresh" refresher-triggered="{{isRefresh}}">
  <view>111111111111111</view>
  <view>222222222222222</view>
  <view>333333333333333</view>
</scroll-view>

scrollview.wxss

/* pages/8-scrollview/8-scrollview.wxss */
.box{
  height: 300px;
}

.item{
  height: 300px;
}

.box_horizontal{
  height: 300px;
  display: flex;
  flex-direction: row;
  width: 100vw;
}

.item_horizontal{
  width: 200px;
  flex-shrink: 0;
}

scrollview.js

// pages/8-scrollview/8-scrollview.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    isRefresh:true
  },

  handlescrolltolower(){
    console.log("到底了")
  },

  handleRefresh(){
    console.log("下拉了")
    setTimeout(()=>{
      this.setData({
        isRefresh:false
      })
    },2000)
  },

  handleRight(){
    console.log("到右边了")
  }
})

9-othercomponent

othercomponent.wxml

<!--pages/9-othercomponent/9-othercomponent.wxml-->
<wxs src="./sum.wxs" module="sum"/>
<icon class="icon-box-img" type="warn" size="93"></icon>

<view wx:for="{{checkList}}" wx:key="index" style="display: flex;justify-content: space-around;padding: 10px;">
  <checkbox checked="{{item.isChecked}}" bindtap="handeTap" data-index="{{index}}"/>
  <view>
    <view>{{item.name}}</view>
    <view>价格:¥{{item.price}}</view>
  </view>
  <view>{{item.number}}</view>  
</view>

<view>
  金额计算:{{sum(checkList)}}
</view>

sum.wxs

function sum(checkList) {
  var total = 0
  for (var index = 0; index < checkList.length; index++) {
    if(checkList[index].isChecked){
      total += checkList[index].number * checkList[index].price
    }
  }
  return total
}

module.exports = sum

othercomponent.js

// pages/9-othercomponent/9-othercomponent.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    checkList:[
      {
        id:1,
        name:"aaa",
        price:100,
        number:1,
        isChecked:false
      },
      {
        id:2,
        name:"bbb",
        price:200,
        number:2,
        isChecked:false
      },
      {
        id:3,
        name:"ccc",
        price:300,
        number:3,
        isChecked:false
      }
    ]
  },

  handeTap(event){
    var index = event.target.dataset.index
    // console.log(index)
    this.data.checkList[index].isChecked = !this.data.checkList[index].isChecked
    // console.log(this.data.checkList)
    this.setData({
      checkList:[...this.data.checkList]
    })
  }
})

10-selfComponent

selfComponent.wxml

<!--pages/10-selfComponent/10-selfComponent.wxml-->
<view>自定义组件</view>
<navbar></navbar>

<!-- 父传子 -->
<!-- <navbar list="{{['aaa','bbb']}}"></navbar> -->  

navbar.wxml

<!--components/navbar/navbar.wxml-->
<view class="box">
  <view wx:for="{{list}}" wx:key="index" class="item {{current===index?'active':''}}"
  bindtap="handleClick" data-index="{{index}}">
    {{item}}
  </view>
</view>

navbar.wxss

/* components/navbar/navbar.wxss */
.box{
  display: flex;
  flex-direction: row;
}

.item{
  flex:1;
  height: 50px;
  line-height: 50px;
  text-align: center;
}

.active{
  color:red;
}

navbar.js

// components/navbar/navbar.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    list:{
      type:Array,
      value:["正在热映","即将上映"],
    },
    current:{
      type:Number,
      value:0
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    // datalist:["正在热映","即将上映"],
    // current:0
  },

  /**
   * 组件的方法列表
   */
  methods: {
    handleClick(event){
      // this.setData({
      //   current:event.target.dataset.index
      // })
      this.triggerEvent("ParentEvent",event.target.dataset.index)
    }
  }
})

11-slot

slot.wxml

<!--pages/11-slot/11-slot.wxml-->
<top-header>
  <button slot="left" bindtap="handleTap">返回</button>
  <button slot="right">首页</button>
</top-header>

<footer wx:if="{{isShow}}"></footer>

slot.js

// pages/11-slot/11-slot.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    isShow:false
  },

  handleTap(event){
    // console.log(event)
    this.setData({
      isShow:!this.data.isShow
    })
  }
})

slot.json

{
  "usingComponents": {
    "top-header":"../../components/topheader/TopHeader",
    "footer":"../../components/footer/Footer"
  }
}

TopHeader.wxml

<!--components/topheader/TopHeader.wxml-->
<view class="box">
  <slot name="left"></slot>
  <text>topheader</text>
  <slot name="right"></slot>
</view>

TopHeader.wxss

/* components/topheader/TopHeader.wxss */
.box{
  display: flex;
  flex-direction: row;
}

TopHeader.js

// components/topheader/TopHeader.js
Component({
  // 支持多个插槽
  options:{
    multipleSlots:true
  },

  /**
   * 组件的属性列表
   */
  properties: {

  },

  /**
   * 组件的初始数据
   */
  data: {

  },

  /**
   * 组件的方法列表
   */
  methods: {

  }
})

Footer.wxml

<!--components/footer/Footer.wxml-->
<view class="box"></view>

Footer.wxss

/* components/footer/Footer.wxss */
.box{
  width: 100%;
  height: 200px;
  position: fixed;
  bottom: 0;
  left:0;
  background-color: red;
}

12-lifecycle

lifecycle.wxml

<!--pages/12-lifecycle/12-lifecycle.wxml-->
<view>抢购倒计时</view>
<count wx:if="{{isCreated}}" bindevent="handleEvent"></count>

lifecycle.json

{
  "usingComponents": {
    "count":"../../components/count/Count"
  }
}

lifecycle.js

// pages/12-lifecycle/12-lifecycle.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    isCreated:true
  },

  handleEvent(){
    this.setData({
      isCreated:false
    })
  }
})

Count.wxml

<!--components/count/Count.wxml-->
{{count}}

Count.js

// components/count/Count.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {

  },

  lifetimes:{
    attached:function () {
      this.intervalId = setInterval(()=>{
        if(this.data.count==0){
          this.triggerEvent("event")
          return
        }
        this.setData({
          count:this.data.count-1
        })
      },1000)
    },
    detached:function () {
      clearInterval(this.intervalId)
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    count:10
  },

  /**
   * 组件的方法列表
   */
  methods: {

  }
})

 

posted on 2023-07-14 17:20  晨曦生辉耀匕尖  阅读(35)  评论(0编辑  收藏  举报