注册个人小程序。

    开发工具下载:
    https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

    文档:
    https://developers.weixin.qq.com/miniprogram/dev/devtools/page.html#%E5%90%AF%E5%8A%A8%E9%A1%B5

    https://developers.weixin.qq.com/miniprogram/dev/reference/wxml/list.html

    属性data:
    支持驼峰命名,如果命名为大写则全部转为小写,如果想要变大写,需要在字母前加-,注意第一个-是分隔符,不会起作用。

    1. <button bindtap="login" data-A-AAA="11" id="login">登录</button>

    Login时获取到输入数据方式1:

    1. <view>
    2. <text>账号:</text>
    3. <input name="account" bindinput="accountInput" type="number" maxlength="11"/>
    4. </view>
    5. <view>
    6. <text>密码:</text>
    7. <input name="password" bindinput="passwordInput" type="password" maxlength="6"/>
    8. </view>
    9. <view class="buttonCon">
    10. <button bindtap="login" data-account="11" id="login">登录</button>
    11. <button bindtap="register" id="register" >注册</button>
    12. </view>
    1. accountInput: function (event) {
    2. console.log(event.detail.value);
    3. this.setData({
    4. account: event.detail.value
    5. });
    6. },
    7. passwordInput: function (event) {
    8. console.log(event.detail.value);
    9. this.setData({
    10. password: event.detail.value
    11. });
    12. },
    13. login: function(event){
    14. console.log('Login', this.data.account, this.data.password);
    15. },
    16. register: function(event){
    17. console.log('Register', this.data.account, this.data.password);
    18. }

    currentTarget 和 target的区别:
    如果一个view里还有另一个view,外层view称为outer view,内层称为 inner view,当点击内层view的时候也会触发外层view,可以注意到outer view的 target为inner view,而currentTarget 为outer view。
    如果想要禁用掉外层的tap事件,inner view需要用 catchtap。
    image.png

    1. <form bindsubmit="submit" bindreset="reset">
    2. <view>
    3. <text>账号:</text>
    4. <input name="account" bindinput="accountInput" type="number" maxlength="11"/>
    5. </view>
    6. <view>
    7. <text>密码:</text>
    8. <input name="password" bindinput="passwordInput" type="password" maxlength="6"/>
    9. </view>
    10. <view class="buttonCon">
    11. <button form-type="submit" id="login">登录</button>
    12. <button form-type="submit" id="register" >注册</button>
    13. </view>
    14. </form>
    15. <view id="outter" bindtap="outterTap">
    16. outter
    17. <view id="inner" catchtap="innerTap">inner</view>
    18. </view>

    在wxml中绑定事件时,只能写事件名称,不能带参数:

    1. onLoad: function (options) {
    2. self = this;
    3. },
    4. accountInput: function (event) {
    5. console.log(event.detail.value);
    6. this.setData({
    7. account: event.detail.value
    8. });
    9. },
    10. passwordInput: function (event) {
    11. console.log(event.detail.value);
    12. this.setData({
    13. password: event.detail.value
    14. });
    15. },
    16. login: function(event){
    17. console.log('Login', this.data.account, this.data.password);
    18. },
    19. register: function(event){
    20. console.log('Register', this.data.account, this.data.password);
    21. },
    22. submit: function(event){
    23. console.log('submit',event);
    24. if (event.detail.target.id === 'register') {
    25. console.log('register',
    26. event.detail.value.account,
    27. event.detail.value.password);
    28. }
    29. else {
    30. console.log('login',
    31. event.detail.value.account,
    32. event.detail.value.password);
    33. }
    34. },
    35. reset: function (event) {
    36. console.log('reset', event);
    37. },
    38. outterTap: function(event){
    39. console.log('outter', event);
    40. },
    41. innerTap: function (event) {
    42. console.log('inner', event);
    43. },

    app声明周期:

    1. //app.js
    2. App({
    3. onLaunch: function (query) {
    4. console.log('launch', query);
    5. if (!wx.cloud) {
    6. console.error('请使用 2.2.3 或以上的基础库以使用云能力')
    7. } else {
    8. wx.cloud.init({
    9. // env 参数说明:
    10. // env 参数决定接下来小程序发起的云开发调用(wx.cloud.xxx)会默认请求到哪个云环境的资源
    11. // 此处请填入环境 ID, 环境 ID 可打开云控制台查看
    12. // 如不填则使用默认环境(第一个创建的环境)
    13. // env: 'my-env-id',
    14. traceUser: true,
    15. })
    16. }
    17. },
    18. onShow: function(){
    19. console.log('show');
    20. },
    21. onHide: function(){
    22. console.log('hide');
    23. },
    24. onError: function(error){
    25. console.log('error',error);
    26. },
    27. onPageNotFound: function(){
    28. console.log('page not found');
    29. },
    30. globalData: {
    31. userInfo: 123
    32. }
    33. })

    在页面中获取app实例:
    不要随意调用app的生命周期函数,如果想在 app.js中访问app实例,则可以直接用this。

    1. var app = getApp();
    2. app.globalData // 访问全局数据

    image.png

    onUnLoad: 会在wx.redirectTo后调用(没有返回按钮了),页面被卸载。 如果用wx.navigateTo,页面并不会被卸载 ,只是被隐藏。

    下拉刷新:
    需要在页面的json文件中添加:默认为true。

    1. {
    2. "usingComponents": {},
    3. "navigationBarTitleText": "Demo1",
    4. "enablePullDownRefresh": true
    5. }

    设置分享:
    必须要实现onShareAppMessage。如果没有实现,则 可以在onload方法中,wx.showShareMenu。

    pageOrientation可以让模拟器出现横竖屏切换按钮:

    1. {
    2. "usingComponents": {},
    3. "navigationBarTitleText": "Demo1",
    4. "enablePullDownRefresh": true,
    5. "pageOrientation": "auto"
    6. }
    1. // pages/demo1/demo1.js
    2. var app = getApp();
    3. Page({
    4. /**
    5. * 页面的初始数据
    6. */
    7. data: {
    8. item: {
    9. index: 0,
    10. msg: 'this is a template',
    11. time: '2016-09-15'
    12. }
    13. },
    14. /**
    15. * 生命周期函数--监听页面加载
    16. */
    17. onLoad: function (options) {
    18. console.log("page onload");
    19. console.log(app.globalData);
    20. wx.showShareMenu({
    21. })
    22. },
    23. /**
    24. * 生命周期函数--监听页面初次渲染完成
    25. */
    26. onReady: function () {
    27. console.log("page ready");
    28. },
    29. /**
    30. * 生命周期函数--监听页面显示
    31. */
    32. onShow: function () {
    33. console.log("page show");
    34. },
    35. /**
    36. * 生命周期函数--监听页面隐藏
    37. */
    38. onHide: function () {
    39. console.log("page hide");
    40. },
    41. /**
    42. * 生命周期函数--监听页面卸载
    43. */
    44. onUnload: function () {
    45. console.log("page unload");
    46. },
    47. /**
    48. * 页面相关事件处理函数--监听用户下拉动作
    49. */
    50. onPullDownRefresh: function () {
    51. console.log("page PullDownRefresh");
    52. wx.stopPullDownRefresh();
    53. },
    54. /**
    55. * 页面上拉触底事件的处理函数
    56. */
    57. onReachBottom: function () {
    58. console.log("page Reach Bottom");
    59. },
    60. /**
    61. * 用户点击右上角分享
    62. */
    63. onShareAppMessage: function () {
    64. console.log("page Share App Message");
    65. },
    66. onPageScroll: function(){
    67. console.log('page scroll');
    68. },
    69. onResixe: function(){
    70. console.log('page resize');
    71. },
    72. onTabItemTap: function(){
    73. console.log('page TabItemTap');
    74. // 刷新数据
    75. this.setData({
    76. });
    77. }
    78. })

    restartStrategy:

    1. "window": {
    2. "enablePullDownRefresh": true,
    3. "backgroundColor": "#F6F6F6",
    4. "backgroundTextStyle": "dark",
    5. "navigationBarBackgroundColor": "#F6F6F6",
    6. "navigationBarTitleText": "QuickStart",
    7. "navigationBarTextStyle": "black",
    8. "restartStrategy": "homepage"
    9. },
    1. {
    2. "usingComponents": {},
    3. "navigationBarTitleText": "Demo1",
    4. "enablePullDownRefresh": true,
    5. "pageOrientation": "auto",
    6. "restartStrategy": "homepageAndLatestPage"
    7. }

    页面的方法 onSaveExitState, 退出后可以保存数据,下次可以获取到。