iOS 开发 iOS Developer程序员

小程序开发中的记录【持续更新】

2016-12-15  本文已影响4564人  gitKong

调试

Paste_Image.png

代码运行

查看代码是否已保存

新建项目

文件格式 文档

//获取应用实例
var app = getApp()
Page({
  // 数据
  data: {
    motto: 'MiHome_Store'
  },
  //事件处理函数
  bindViewTap: function () {
    wx.navigateTo({
      url: '../logs/logs'
    })
  }
})

图片格式支持

创建tabBar

"tabBar": {
    "list": [
      {
        "pagePath": "pages/index/index",
        "text": "框架",
        "iconPath": "image/wechat.png",
        "selectedIconPath": "image/wechatHL.png"
      },
      {
        "pagePath": "pages/component/component",
        "text": "组件",
        "iconPath": "image/wechat.png",
        "selectedIconPath": "image/wechatHL.png"
      },
      {
        "pagePath": "pages/api/api",
        "text": "API",
        "iconPath": "image/wechat.png",
        "selectedIconPath": "image/wechatHL.png"
      },
      {
        "pagePath": "pages/tool/tool",
        "text": "工具",
        "iconPath": "image/wechat.png",
        "selectedIconPath": "image/wechatHL.png"
      }
    ]
  }

页面中设置窗口配置信息

"window": {
  "navigationBarBackgroundColor": "#ffffff",
  "navigationBarTextStyle": "black",
  "navigationBarTitleText": "小程序",
  "backgroundColor": "#eeeeee",
  "backgroundTextStyle": "light",
  "enablePullDownRefresh": false
  }
{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "gitkong",
    "navigationBarTextStyle":"black"
}

项目文件快速创建

数据读取

数据更新

// name 是 data 中的一个字段属性,通过点击方法changeName 修改
changeName:function(){
    this.setData({
      name : 'gitkong'
    })
  }

传值

changeName: function(e){
this.change(e)
}

> 此时获取到的e 就是 当前的控件对象,用 `console.log(e)` 打印


![打印的信息](https://img.haomeiwen.com/i1085031/b1501b00b8988901.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- 当然,如果你在js 需要 获取到 wxml(界面) 中 传递的值,利用 id 或者 `data-你喜欢的变量名` 给个view绑定 个值,然后在实参获取到了,当然你喜欢传多少个都可以,名字不一样就行,**注意:不管你外部命名的变量名是否含有大写字母,dataset内部获取到的字段key 都全部转成小写,获取的时候注意,例如`id="{{detailFrameItem.detailName}}" data-index="{{detailIndex}}"` ,此时注意:里面dataset 里面的字段都是小写,不管你在外面怎么写;比如此时我传入 data-detailIndex(驼峰命名法),此时dataset 对应的字段是 detailindex**

WXML

<button class = "name" bindtap = "changeName" data-src = "{{name}}">{{name}}</button>

js

changeName: function(e){
console.log(e)
console.log(e.target.dataset.src)
}


![绑定](https://img.haomeiwen.com/i1085031/b933a1f512c4bb44.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)



- 形参一般是在js 文件中传递,通过 `this.方法名(形参)` 调用并传参

change:function(e){
// 此时打印的就是 hello
console.log(e)
},

changeName: function(e){
this.change('hello')
console.log(e.target.dataset.src)
},


#页面跳转
- 通过 `wx.navigateTo` 方法跳转,同级目录就只有一个 `../` 上层有多少个就添加多少个`../`

wx.navigateTo({
url: '../question/question'
})


- 通过 `navigator` 标签,在 WXML 中创建并传入跳转的url

#换行
-  `<br>` 是不行的,要用 `\n`

#setData 里面不能处理任何逻辑,只能是赋值

this.setData({
xx : ''
})

![error](https://img.haomeiwen.com/i1085031/abaf13959ebef298.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/400)


# JS 的 forin 是遍历出角标,并不能直接获取数组元素

for (var item in items){
console.log(items[item].name)
}


# let 接收变量
- 小程序使用let 接收变量,然后修改了,编译通过,运行还不报错;所以推荐都是用var 来接收吧,防止手残,找问题找死你

# js 里面的点语法
- 编写代码的时候,js 文件中,你可以点任何东西,他不报错也不提示

# 注释问题
- 都可以通过快捷键 command + / 注释
- **注意:app.json 里面不能添加注释,编译不过**

# 断点问题
- 如果你打了断点,没取消,然后去编辑代码,当你编译触发断点后,界面不会跳到调试界面,所以要注意自己的断点喔

# wxss 文件中代码不提示
- 在wxss 文件中,如果首次布局对应的 class选择器或者id 选择器,不会提示,但第二次就会提示了,类似于xcode 8 的一个bug,导入文件的时候,首次不会提示,需要手动打

# 快速拷贝单行
- WXML 里面编写代码同样,一行可以写到底,写得很长,全选复制就麻烦,其实它像HTML 一样,只要你光标停在那,不选中,command + c 就是复制整行代码了

#标签内容换行问题
- 设置宽度了,但如果是英文,不会换行,如果是中文,会自动换行

![中文能换行](https://img.haomeiwen.com/i1085031/b9b33c409a003500.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![英文不会换行](https://img.haomeiwen.com/i1085031/5e4ec083ac83ca0d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#json 格式显示
- 因为小程序中没有了code标签,因此不能直接显示json 数据,可以手动添加\n 实现换行,但\t 没效果,不能实现缩进

#页间文本中使用嵌套,换行问题
- 里面的标签不要使用view,view会默认换行,而text不会

![view 标签会自动换行](https://img.haomeiwen.com/i1085031/99eba50e14338081.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![text标签不会自动换行](https://img.haomeiwen.com/i1085031/31cdaa2b867131ad.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#WXML 字符转义问题
- 在小程序中,HTML 对应的转义字符已经不适用了,官方文档也没发现有对应的解决办法,测试能通过 js 中获取

![WXML 字符转义问题](https://img.haomeiwen.com/i1085031/0d66c4e3163118e3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#text标签嵌套事件绑定响应问题
- 默认text是不能响应事件的,view可以,如果嵌套text标签内部要响应事件,最外层的text需要绑定响应事件才能响应

#路径问题
app.json 中的路径是绝对路径,而图片加载、文件导入都是相对路径,可以通过../回到上一级来获取

#import 和 include 导入问题
- import 是 导入模板,就是使用 `template` 定义的
- include 是 导入标签内容

#require 获取其他 js 文件的路径问题
- `var common = require('../../../../../alert.js')` 此时如果路径不正确,不会报错,但会将整个项目的路径打乱,还没搞清楚

#快速关闭其他标签的问题
- 右键选择关闭其他标签或者关闭右侧标签,此时会弹出一个 `检查` 按钮,而且是截取了屏幕的点击事件,此时需要先 按 `esc` ,去掉 `检查` 按钮,然后才能选择关闭标签

![关闭其他标签](https://img.haomeiwen.com/i1085031/22c8e121e052eaf2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#HTTPS 请求
- 模拟器调试情况下,可以关闭ATS检查,请求http可以获取数据
- 真机情况下,就必须使用HTTPS请求

# 数组操作
- 跟js完全一样,通过 `concat` 拼接数组,通过 `slice` 截取数组

# textarea 的注意问题
- textarea 使用会有默认的高度,而且默认是透明颜色,因此容易出现遮挡问题而没发现。


# 列表中数据保存的问题
- 如果是列表数据的话,很容易出现数据被清空,因为很多时候我们通过setData重新赋值,此时修改的内容没更新,就出现清空情况,作者是通过绑定事件,监听输入焦点不在的时候,保存一次数据

# picker 真机不显示的问题
- 如果你的picker 里面是input 并且disable为false,那么在模拟器上是可以正常使用的,但真机上就没办法显示;换成view标签就行了

#video 标签播放问题
- 模拟器上面是不能全屏播放,而且多个视频都共用一套,真机不是

#安卓设配flex问题
- 苹果使用flex布局没问题,但放到安卓上就出现很多问题,flex没效果,需要使用 `display: -webkit-flex;`

#小程序上使用 `background-image ` 的使用问题
- 真机上不能显示本地路径的图片,网络的可以
- 模拟器上都能正常显示

#监听上拉加载更多的状态,可以实现系统的方法 `onReachBottom`

# form 表单提交问题
- 使用form提交虽然快捷,但适配安卓的时候就出现很多问题,会出现按钮点击无效果,不建议使用form表单提交

# 小程序或者js中的常量表示
- const 表示 常量,var 表示变量,let 也是变量,但是局部变量(外界不能访问)
上一篇 下一篇

猜你喜欢

热点阅读