小程序学习

2017-08-22  本文已影响0人  左耳右耳记得忘却

template

index.wxml里导入模板
    <import src="../item/item.wxml"/>
    <template is="staffName" data="{{...staffA}}"></template>

item.wxml写入模板
    <template name="staffName">
      <view>
        FirstName: {{firstName}}, LastName: {{lastName}}
      </view>
    </template>

import的作用域与include

1.
  import 有作用域的概念,即只会 import 目标文件中定义的 template,而不会 import 目标文件 import 的 template。

  C import B,B import A,在C中可以使用B定义的template,在B中可以使用A定义的template,但是C不能使用A定义的template。

2.
  include可以将目标文件除了<template/>的整个代码引入,相当于是拷贝到include位置

数据绑定

1.
    用扩展运算符 ... 来将一个对象展开
2.
    花括号和引号之间如果有空格,将最终被解析成为字符串
    <view wx:for="{{[1,2,3]}} ">
      {{item}}
    </view>
    等同于
    <view wx:for="{{[1,2,3] + ' '}}">
      {{item}}
    </view>

列表渲染

<view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName">
  {{idx}}: {{itemName.message}}
</view>
************
使用 wx:key 来指定列表中项目的唯一的标识符。  wx:key="{{index}}"
************

条件渲染

1.block
    <block/> 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。
2.v-if与hidden
    wx:if 有更高的切换消耗而 hidden 有更高的初始渲染消耗。因此,如果需要频繁切换的情景下,用 hidden 更好,如果在运行时条件不大可能改变则 wx:if 较好。  
3.  wx:if     wx:elif    wx:else

模板

1.定义模板
    使用name属性,作为模板的名字。然后在<template/>内定义代码片段。
2.使用模板
    使用 is 属性,声明需要的使用的模板,然后将模板所需要的 data 传入
        <template is="msgItem" data="{{...item}}"/>
    is 属性可以使用 Mustache 语法,来动态决定具体需要渲染哪个模板:
        <template is="{{item % 2 == 0 ? 'even' : 'odd'}}"/>

事件

bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡。

兼容处理

if (wx.openBluetoothAdapter) {
  wx.openBluetoothAdapter()
} else {
  // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
  wx.showModal({
    title: '提示',
    content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
  })
}

创建一个tab

**app.json里写入**

"tabBar": {
    "color": "#747575",
    "selectedColor": "#ff927c",
    "borderStyle": "black",
    "backgroundColor": "#ffffff",
    "list": [
        {
            "pagePath": "pages/index/index/index",
            "iconPath": "image/img_wyl/nav1.png",
            "selectedIconPath": "image/img_wyl/nav11.png",
            "text": "首页"
        }
    ]
},

wxss

1.
    rpx  自适应
    640尺寸  
    字体:24rpx  相当于1.2rem
    宽高所有的尺寸都可以设置
2.
    li 设置为display:block

wxml

1. 
    input后必须加"/",按照规则来写,有空格会报错   
2.
     <text class="{{userInfo.gender==1 ? 'sex_man' : 'sex_woman'}}">  
     <p class="jiazai  {{type.jiazai==1?'jiazai_show':''}}">老板别着急,正在给你找</p>

公共js

const config = require("config.js");

function formatTime(date) {
  var year = date.getFullYear()
  var month = date.getMonth() + 1
  var day = date.getDate()

  var hour = date.getHours()
  var minute = date.getMinutes()
  var second = date.getSeconds()


  return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}

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

//网络请求
function request(parameters = "",success, method = "GET", header = {}) {
  wx.request({
    url: config.BaseURL +(method == "GET" ? "?" : "")+ parameters,
    data: {},
    method: method, // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
    header: header ? header : "application/json", // 设置请求的 header
    success: function(res){
      console.log(res);
      success(res);
    },
    fail: function() {
      // fail
    },
    complete: function() {
      // complete
    }
  })
}

//HUD 
//成功提示
function showSuccess(title = "成功啦", duration = 2500){
  wx.showToast({
      title: title ,
      icon: 'success',
      duration:(duration <= 0) ? 2500 : duration
  });
}
//loading提示
function showLoading(title = "请稍后", duration = 5000) {
  wx.showToast({
      title: title ,
      icon: 'loading',
      duration:(duration <= 0) ? 5000 : duration
  });
}
//隐藏提示框
function hideToast(){
  wx.hideToast();
}

//显示带取消按钮的消息提示框
function alertViewWithCancel(title="提示",content="消息提示",confirm,showCancel="true"){
  wx.showModal({
    title: title,
    content: content,
    showCancel: showCancel,
    success: function(res) {
      if (res.confirm) {
        confirm();
      }
    }
  });
}
//显示不取消按钮的消息提示框
function alertView(title="提示",content="消息提示",confirm){
  alertViewWithCancel(title,content,confirm,false);
}

module.exports = {
  formatTime: formatTime,
  request: request,
  showSuccess: showSuccess,
  showLoading: showLoading,
  hideToast: hideToast,
  alertViewWithCancel: alertViewWithCancel,
  alertView: alertView
}

input的值获取

var username = e.detail.value.username;
 //html
<form bindsubmit="formSubmit">
    <input name="username" maxlength="18" placeholder="输入用户名"></input> 
</form>// 将所需的提交数据用form标签包起来
<button class="qr_btn"   formType="submit">下一步</button>
//js
 formSubmit:function(e){
    console.log(e.detail.value)
}

获取用户信息

var app = getApp();
data:{userInfo:{}}
onLoad: function (options) {
    var that = this
    //调用应用实例的方法获取全局数据
    app.getUserInfo(function (userInfo) {
        //更新数据
        that.setData({
            userInfo: userInfo
        })
        console.log(userInfo)
    })
}

微信小程序html解析

1.
上一篇下一篇

猜你喜欢

热点阅读