项目结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | project ├─ app.js //放置全局的数据,其他js文件通过全局函数 getApp() 可以获取全局的应用实例 ├─ app.json //是对当前小程序的全局配置,包括了小程序的所有页面路径、界面表现、网络超时时间、底部 tab 等 ├─ app.wxss ├─ components //组件 ├─ utils │    └─ util.js //放一些公共的js函数 ├─ pages │    ├─ index //初始界面 |    |     ├─ index.js │    |     ├─ index.wxml |    |     └─ index.wxss │    └─ other page //其他界面 └─ project.config.json //工具配置
   | 
 
数据传递
给数据传出方添加triggerEvent事件:this.triggerEvent("事件名", 数据)
 
在数据传出方的组件内添加bind:m="n" m为第一步的那个事件名,n为数据接收方处理数据的函数名。
 
比如我现在在一个页面(比如index)内用到了v-modal这个组件,而且我需要接收来自v-modal的数据,那么代码需要这样写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
   | //index.wxml <v-modal bind:modalValue="receiveModalValue"></v-modal>
  //index.js data: {     value:'' }, receiveModalValue: function (e) {   this.setData({     value: e.detail   }) }
  //v-model.js data: {     value:'' }, methods: {   modalConfirm: function (e){     this.triggerEvent("modalValue", this.data.value)     ...   } }
   | 
 
不管在数据传出方里数据的字符串类型还是数字类型,数据接收方收到的都是字符串类型(即e.detail为字符串类型)
官方IDE无法输中文
部分文件处于编辑未保存状态被关闭,重启该项目就会这样,必须把未保存的文件找出来保存后再重启开发者工具才行。
依次点击文件,若上一个文件未保存,那么当点击新文件时会在新的窗口显示。
生命周期
组件也有生命周期函数,和页面一样。
页面有:onload   onready    onshow    onhide       onunload
组件有:created   attached   ready       detached    move
1 2 3 4 5 6 7 8
   | Component({      attached: function(){},   moved: function(){},   detached: function(){},   created: function(){},   data: {} })
  | 
 
公共方法的引用
1.在utils/util.js里编写公共的方法,例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | 
 
  function Regular(str, reg) {   if (reg.test(str))     return true;   return false; }
 
  function IsChinese(str) {   var reg = /^[\u0391-\uFFE5]+$/;   return Regular(str, reg); }
 
  | 
 
2.将这些方法暴露出去
1 2 3 4 5 6
   | 
  module.exports = {   getRequestUrl: "http://localhost:59637",   IsChinese: IsChinese, }
 
  | 
 
3.在其他js文件中引用这些方法
1 2 3 4 5 6 7 8 9 10 11
   | 
  var util = require('../../utils/util.js'); Page({     onLoad: function () {     console.log("判断是否为中文:"+util.IsChinese('测试'));     console.log("输出接口url:"+util.getRequestUrl);     } })
 
 
 
  | 
 
公共数据
1.建立公共数据
1 2 3 4 5 6 7 8 9
   | 
  App({      globaData:{     m: 'huangenai',     n: []   }  })
 
  | 
 
2.引用数据
1 2 3
   |  var app = getApp(); app.globalData.m = 'abc'
 
  | 
 
调用自定义的函数
微信小程序中调用page中自定义的函数,在函数中如果不加this的话控制台会报错。正确格式:this.initalEncryptedInput()
behavior
存放组件共用的函数
每个 behavior 可以包含一组属性、数据、生命周期函数和方法,组件引用它时,它的属性、数据和方法会被合并到组件中,生命周期函数也会在对应时机被调用。每个组件可以引用多个 behavior 。 behavior 也可以引用其他 behavior 。
behavior 需要使用 Behavior() 构造器定义。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   |  module.exports = Behavior({   behaviors: [],   properties: {        },   data: {        },   attached: function(){},   methods: {     myBehaviorMethod: function(){}   } })
 
  | 
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
   |  var myBehavior = require('my-behavior') Component({   behaviors: [myBehavior],   properties: {        },   data: {        },   attached: function(){},   methods: {     myMethod: function(){}   } })
 
  | 
 
这样myBehaviors里面的函数、性质那些就可以在 my-component.js里面直接用了
修改数组
1 2 3 4
   | this.data.multiArray[0] = xxx     this.setData({       multiArray: this.data.multiArray     })
   |