在一般的函数中: bindFaChange1: function (e) { console.log('picker发送选择改变,携带值为', e.detail.value) this.setData({ index1: e.detail.value }) } this.setData是正确的. 但当在函数中有个请求(wx.request)时: formSubmit: function (e) { wx.request({ method: 'POST', header: header, url:…
前言: 之前使用 setData,一直都是作为给变量赋值,感觉比起vue给data中的变量的赋值还是有点麻烦的. 最近项目不太紧张,为了提高小程序的开发效率及提升小程序开发的能力,又重新的通读了下小程序的开发文档.发现 setData还有一个非必填的参数 callback——setData引起的界面更新渲染完毕后的回调函数,通过这个回调函数,可以在更新data中的数据的时候,同步在回调函数中进行相应操作,这比更新数据和后续操作分开写好多了. Page.prototype.setData(Obje…
小程序不方便之处: 1: 想做个获取列表中每个item所在的对应滚动条的高度在哪里,或者元素本身的高度也不好获取,极其不方便,网上看的别人做的滚动条相关的,都是写死或者已知的item高度,目前没找到正确的方式,也可能是打开方式不对. 2:当点击某个按钮的时候想要获取当前滚动条的高度位置,不方便,只能在监听滚动条时刻滚动的时候获取最新的值存起来.这样的操作setData太耗费性能,毕竟view model跟js core做交互成本不低. 3:接着上一条,不能监听onPageScrol 滚动条停止滚…
小程序 添加新的功能, 页面跳转后,通过事件的发布订阅,实现 from => to 或者 to=> from 数据传递 1. 跳转到指定页面. 通过 wx.navigateTo() .请参考官方文档 2. 进入当前跳转页面.onload() . 参考官方文档 / *** 开发过程中遇到bug. ****/ 解决方案: 页面json配置文件的 usingComponents.加上.没有特殊情况,请不要删除. 在小程序开发工具中,基础版本库要求是 2.7.7以上. (我自己设置的是 7.7.7,毕…
1.定义 setData()函数用于将逻辑层数据发送到视图层,同时对应的改变this.data的值. 2.setData()参数格式 接受一个对象,以键(key)值(value)的方式改变值. 其中,key十分灵活,以数据路径的方式给出 -- array[2].message,a.b.c.d,并且不需要在 this.data 中预先定义. 3.实例 Page({ data: { text: 'init data', array: [{text: 'init data'}], object: {…
在page中有如下数组 data: { info:[ { name:"yuki", tou:"../img/head.jpg", zGong:130, gMoney:222222 }, { name: "yuki", tou: "../img/head.jpg", zGong: 130, gMoney:222222 }, { name: "yuki", tou: "../img/head.jpg&…
假如现在要给数组marker中的对象属性赋值 data: { marker: [ { latitude: ' ' , longitude: ' ' } ] },   在方法中的写法为   fetchJobInfor ( ) { let  lat = 'marker[0].latitude' let  lon = 'marker[0].longitude' this.setData({ [lat]:  ' 赋值1 ', [lon]: ' 赋值2 ' }) }…
原创文章 1. Page({    data: {      items:{ //items为一个对象,is_like和like分别为其两个属性     is_like: 0,    like: 0  } },   likes: function () { var is_like ="items.is_like"; //先用一个变量,把items.is_like用字符串拼接起来 var like = "items.like"; if (this.data.items…
page({ data:{ s1:{a:"",b:"b"} }, changeData:function(e){ var cData=this.data.s1; cData.a="1";//先修改json值 this.setData({ //再set值 s1:cData }) } })…
Page({ /** * 页面的初始数据 */ data: { }, /** * 生命周期函数--监听页面加载 */ onLoad: function(options) { let _page = this; let config = { api: 'www.playsort.cn' } let configApi = config.api; /** * 为何我们的设置到页面上有的需要加分号? 因为会报错 * 1.怎么解决? 加分号设置到页面上 * 2.怎么解决? 用一个变量保存值,再设置到页面…
Page.prototype.setData(Object data, Function callback) setData 函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data 的值(同步). 参数说明 字段 类型 必填 描述 最低版本 data Object 是 这次要改变的数据 callback Function 否 setData引起的界面更新渲染完毕后的回调函数 1.5.0 Object 以 key: value 的形式表示,将 this.data 中的 ke…
在page中 data: { info: [{ name: "yuki", tou: "../img/head.jpg", zGong: 130, gMoney: 222222 }, { name: "yuki", tou: "../img/head.jpg", zGong: 130, gMoney: 222222 }, { name: "yuki", tou: "../img/head.jpg&…
typeof cb == "function" && cb(obj) 但凡用了Promise,这种方式就可以抛弃了. Page({ data: {}, onLoad() { request('https://api.it120.cc/jy02149522/banner/list', { type: 0 }, function(obj) { console.log('请求到的数据:', obj) }) } }) // request请求封装 const request =…
最近在使用微信小程序的setData时,遇到了以下问题.如下: 官网文档在使用setData()设置数组对象的某个元素的属性时,是这么使用的: Page({ data: { array: [{text: 'init data'}], }, changeItemInArray: function() { this.setData({ 'array[0].text':'changed data' }) } }) 使用了 ‘array[0].text’ : ‘changed data’ 这样的值.但在…
1.首先分享 微信统一下单接口: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1   微信接口 签名 对比网址: https://pay.weixin.qq.com/wiki/tools/signverify/   微信小程序 微信支付 网址: https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-pay.html#wxrequestpaymentobject 2.微信小程序端…
前言: 小程序开发中诸如获取用户手机号码.调起微信支付.领取卡券等api都是会有一定的延迟的.也就是说通过点击按钮调用这些api的时候,从点击按钮调用api,到支付页面或者领取卡券界面展示出来是需要一定时间的,连续点击按钮,还是有可能会重复调用的. 虽然这种情况有点极端,正常用户是不会这么连续快速的点击按钮的,但是也不能排除有用户手抖,连续点了两下.如果重复调用的话,不仅体验不好,单击事件中涉及到后端接口操作的也可能引起其他异常.所以这个问题还是要处理下的. 刚开始想到的是使用loading开启…
wxml <button disabled='{{disabled}}' bindtap="goGetCode">{{code}}</button> js data:{ disabled: false, code: '获取验证码', }, goGetCode:function(){ var that = this; var time = 60; that.setData({ code: '60秒后重发', disabled: true }) var Interv…
最近的项目需要使用小程序的蓝牙功能与硬件设备进行连接相互传送数据指令,联调过程中发现一些问题,于是想着记录下来,方便以后查看! 1.0一般使用蓝牙功能肯定是想连接某一个蓝牙设备,所以需要知道这个蓝牙设备的名称,一般来说都是扫描二维码连接,那么当你扫描这个设备二维码的时候,就需要去初始化你手机上的蓝牙模块了 /** * 初始化蓝牙设备 */ initBlue:function(){ var that = this; wx.openBluetoothAdapter({//调用微信小程序api 打开蓝…
要求能把用户昵称.头像以及open_id写入数据库,服务端保持用户登录状态 wxml: <block wx:else> <button type="primary" open-type="getUserInfo" bind:tap="login">授权登录</button> </block> wxjs: // index.js // 获取应用实例 const app = getApp() Page(…
最近帮人家做一个微信小程序,刚好想熟悉一下.由于牵扯到多用户使用系统,以及数据共享,所以自然架构选择了,客户端和服务器的方式. 后台服务器是windows server,后台程序是.Net  WebApi,跑在IIS下面,因为不想系统太重,数据量不大,所以选择了xml 作为数据库 客户端,服务器架构的微信小程序坑如下 第一坑:(五项条件请具备) 1.一个已备案的域名(二级域名可以的),不是localhost.也不是127.0.0.1,域名不能加端口 (所以不要梦想可以搭在局域网里使用了,那是不可…
最近有个项目是保存为名片(图片),让用户发送给朋友或朋友圈,找了很多方案都不适用,绞尽脑汁之后还是选了使用canvas,但是用这玩意儿生成图片最大的缺点就是,如果你的内容中有图片,并且这个图片是通过外链链接进来的,那么很容易造成跨域而无法生成图片的问题,以下就是我解决该问题的办法: *提前说一句,在做这个功能的时候,我发现跨域的问题没法解决,唯一能做的就是把图片放到和canvas相同的域里 1,以下是微信小程序的wxml文件部分 <canvas canvas-id='share' width=&qu…
今天为大家带来比较简单的支付后台处理 首先下载官方的c#模板(WxPayAPI),将模板(WxPayAPI)添加到服务器上,然后在WxPayAPI项目目录中添加两个“一般处理程序” (改名为GetOpenid.ashx.pay.ashx) 之后打开business目录下的JsApiPay.cs,在JsApiPay.cs中修改如下两处 然后在GetOpenid.ashx中加入代码如下: public class GetOpenid : IHttpHandler { public string op…
在微信小程序中我们一般通过以下方式来修改data中的数据 this.setData({ index1: e.detail.value }) 比如在函数里面修改数据 bindFaChange1: function (e) { this.setData({ index1: e.detail.value }) } 但是当我们通过wx.request请求网络数据成功后绑定数据时候报以下错误 this.setData is not a function 代码如下: doCalc:function(){ w…
关键技术点: 作用域问题——回调函数中的作用域已经脱离了调用函数了,因此需要在回调函数外边把this赋给一个新的变量才可以了. 业务需求: 微信小程序开发,业务逻辑需要,需要把获取手机号码的业务逻辑作为检验登录有效性函数的回调函数. 异常描述: 微信小程序开发给data中的变量赋值,出现以下错误: VM1610:1 thirdScriptError Cannot read property 'setData' of undefined;at pages/index/index checkSess…
最近在学习微信小程序的开发,让我吐槽的是,都9102年了,怎么还是有有时不能复制,有时不能打中文的bug呢,这个时候,你可以Ctrl+shift+w一下,如果还不行,那就得重启了.. 进入正题吧,刚在写代码的时候,报了这样一个错误 然后把this输一下是undefined,因为这个时候this指向的是当前wx对象,而wx对象没有setData,我们应该将this的指向修改为page对象 只要把success改成箭头函数就ok啦...…
本人也是刚开始接触微信小程序,在微信小程序中经常会遇到修改数组中某一项的值,比如array[0]或者是对象中object.item的值.这些值在微信小程序中都需要使用一个名为setData的方法,而这个方法是通过键值对的形式对数据进行修改,setData({ 参数名: 值 }); 既然知道是以键值对的方式进行传参,那么我们在修改数组和对象的时候就直接将要修改的参数名写成对应字符串就可以了,然后使用[]将字符串括起来,这就告诉编译器这是指向的是该字符对应的实际位置,如下: var authorit…
在微信小程序中我们一般通过以下方式来修改data中的数据: 比如获取小程序缓存: wx.getStorage({ key: 'is_screen', success: function (res) { this.setData({ is_screen: res.data }) } }) 但是会报错: this.setData is not a function 这是因为this作用域指向问题 ,success函数实际是一个闭包 , 无法直接通过this来setData 那么需要怎么修改呢? 我们…
首先先介绍一下微信小程序Page.prototype.setData(Object data, Function callback)的讲解: setData函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的this.data的值(同步) 微信小程序官网文档只对字符串,数字,数组和对象类型的数据通过对setData进行了修改,却没有对动态数据进行讲解,在这里我就针对静态数据以及动态数据的修改进行讲解. 这里关键是动态数据修改,通过使用[...]: "..."进行动态数据赋值,如下…
众所周知,微信小程序里所有对数据的修改只有在setData里修改才会在页面上渲染.在此分享小程序里复杂数组的更新.删除.添加.拼接 初始数据 数组嵌套对象 data: { cartList = [{ id: 1, goods: {id: 1, name: 'wechat'}, checked: true }, { id: 2, goods: {}, checked: false }, { id: 3, goods: {}, checked: true }] }, 索引部分删除 let index…
最近这段时间在写微信小程序,有一个页面需要动态修改 data 中的数据,而这里似乎是个坑. 1.正常修改 正常修改很简单,当触发 change 事件时,数据和页面都会同时发生改变.这个也不用多说,很简单的例子.   2.如何修改对象中某个属性值 当你想把下面代码中 human 中的 height 的值改成 178 时,直接用 this.setData ({human.height: 178}) 会报错.   这个时候可以先用字符串拼接属性名,然后用 [] 包裹起来,这里画上,待会可能要考.  …