美文网首页
小程序(三)

小程序(三)

作者: guanalex | 来源:发表于2017-12-24 15:32 被阅读29次

这篇文章主要是总结一些小程序入门中用到的从视图层到数据传输的一些方法和事件。

视图层

1.数据绑定
使用{{}}即可完成数据绑定,{{}}内也可以进行计算、逻辑判断、字符串运算等
也可以为属性进行数据绑定,在引号内使用,如:
<view id="item-{{id}}"> </view>,在data中定义id=1,就可以在这里绑定id为item-1
2.列表渲染
使用wx:for后面接需要渲染的数组,示例如下:

<!--wxml-->
<view wx:for="{{array}}"> {{item}} </view>
// page.js
Page({
data: {
array: [1, 2, 3, 4, 5]
  }
})

使用列表渲染有默认值index,表示当前下标,如:{{index}}: {{item}}
使用wx:for-index和wx:for-item可以指定当前下标名和元素名:

<view wx:for="{{array}}" wx:for-index="idx" wx:for-        item="itemName">
{{idx}}: {{itemName.message}}
</view>

3.条件渲染:使用wx:if/elif/else,示例:

<!--wxml-->
  <view wx:if="{{view == 'WEBVIEW'}}"> WEBVIEW </view>
  <view wx:elif="{{view == 'APP'}}"> APP </view>
  <view wx:else="{{view == 'MINA'}}"> MINA </view>
// page.js
Page({
  data: {
    view: 'MINA'
  }
})

上面的代码根据data中的view的值判断到底显示什么样的内容
可以使用<block>结构进行条件渲染多个组件,注意block只是一个包装元素没有实际样式:

<block wx:if="{{true}}">
  <view> view1 </view>
  <view> view2 </view>
</block>

4.使用模版

<template name="staffName">
  <view>
FirstName: {{firstName}}, LastName: {{lastName}}
</view>
</template>
<template is="staffName" data="{{...staffA}}"></template>
<template is="staffName" data="{{...staffB}}"></template>
<template is="staffName" data="{{...staffC}}"></template>
// page.js
Page({
data: {
staffA: {firstName: 'Hulk', lastName: 'Hu'},
staffB: {firstName: 'Shang', lastName: 'You'},
staffC: {firstName: 'Gideon', lastName: 'Lin'}
}
})

上面的例子首先使用template定义了一个模版,指定name属性,然后定义了模版的内容。下面就可以直接使用这个模版了,定义data属性为模版传递每个实例化的数据,is指定要使用的是哪个模版

5.事件
分为bind开头的事件属性和catch开头的事件属性,前者不会阻止冒泡,后者会阻止冒泡
每个事件对应一些属性,如果把一个event打印出来返回内容如下:

<view id="tapTest" data-hi="MINA" bindtap="tapName"> Click me!             </view>

Page({
  tapName: function(event) {
    console.log(event)
  }
})
可以看到log出来的信息大致如下:

{
"type": "tap",  //事件类型
"timeStamp": 1252,  //事件生成的事件戳
"target": {   //出发事件的源组件
  "id": "tapTest",
  "offsetLeft": 0,
  "offsetTop": 0,
  "dataset": {  //组件属性中以data-开头的属性集合
  "hi": "MINA"
  }
},
"currentTarget": {  //事件绑定的当前组件
  "id": "tapTest",
  "offsetLeft": 0,
  "offsetTop": 0,
  "dataset": {
    "hi": "MINA"
  }
},
"touches": [{  //触摸信息,分别是距离文档左上角、出去导航栏的左上角、整个屏幕左上角距离
  "pageX": 30,
  "pageY": 12,
  "clientX": 30,
  "clientY": 12,
  "screenX": 112,
  "screenY": 151
}],
"detail": {
  "x": 30,
  "y": 12
}
}

传递基本数据

1、index.js 发送

Page({  
    data: {  
    testStr: '字符串str'  
  },  
  onLoad: function () {  
    },  
    next: function(e){  
      wx.navigateTo({  
        url: '/pages/test/test?str='+this.data.testStr,  
      })  
  }  
})  

2、test.js 接受页JS

Page({  
data:{  
},  
onLoad:function(options){  
console.log("接收到的参数是str="+options.str);  
  }  
}) 

传递对象{}

1、index.js 发送页JS

Page({  
  data: {  
    testData:{name:'我是name', extra:'我是extra'}  
  },  
  onLoad: function () {  
  },  
  next: function(e){  
    wx.navigateTo({  
      url: '/pages/test/test?extra='+JSON.stringify(this.data.testData)  
    })  
  }  
})  

相关文章

  • 小程序究竟有什么价值?

    ​互联网公司都在布局小程序。小程序开发平台已多达9家。 目前BAT三巨头都有自己的小程序,三大小程序,微信小程序,...

  • 小程序部署流程

    小程序部署流程: 一、 注册小程序(小程序接入指南) 二、创建小程序项目(简易教程·小程序) 三、部署开发环境(开...

  • 【小程序入门集锦】16,小程序size从1M升到2M

    1、第三方平台支持小程序 第三方平台新增小程序授权托管。小程序管理员将小程序授权给第三方平台后,该平台可帮助小程序...

  • 小程序(三)

    这篇文章主要是总结一些小程序入门中用到的从视图层到数据传输的一些方法和事件。 视图层 1.数据绑定使用{{}}即可...

  • 小程序(三)

    一、小程序打开默认某一个tab页 在开发过程中,如果在写第四个tab页,可是每次打开的时候都会默认打开第一页,...

  • 微信小程序(第二天笔记)

    一、重温小程序如何创建页面 二、小程序数据绑定 三、小程序数据遍历和判断 四、小程序css选择器

  • 我是如何快速上手微信小程序开发的

    一 如何创建一个微信小程序 二 如何搭建小程序页面 三 小程序如何获取数据,处理逻辑 四 如何发布小程序应用 无论...

  • 微信小程序账号申请以及基本使用

    本章主要内容: 一、小程序简介 二、小程序账号申请流程 三、小程序相关信息配置 四、微信开发者工具 五、小程序基本...

  • 微信小程序(第三天笔记)

    本节知识要点: 一、重温小程序如何创建页面 二、小程序数据绑定 三、小程序数据遍历和判断 四、小程序css选择器 ...

  • 青否小程序,让企业做小程序获得更多优势!

    真正懂小程序,并且能独立做出小程序的企业并不多,因此,不少企业都选择了小程序第三方平台。可以说小程序第三方平台给大...

网友评论

      本文标题:小程序(三)

      本文链接:https://www.haomeiwen.com/subject/tulhgxtx.html