微信小程序5 - 数据驱动界面
微信小程序不可以使用js直接控制界面元素.而是通过改变 this.data中的属性,同步到界面
这个问题可以克服,带来的就是和H5不一样的编码方式.JS中更多的是改变数据的逻辑,而不是获取某个View来改变属性值
例: 图片的error,加载默认图片
网页中 <img src="http://www.url/...png" onerror="this.src='默认图片'" />
微信小程序
<image src="{{imgurl}}"
>
showDefaultImage 在BasePageOption中定义
data-data_path 定义当前图片在数据结构中的路径
BasePageOptionClass.prototype.showDefaultImage = function (e) {
var self = this;
var defaultImage = getApp().getProp("defaultImage");
var key = e.currentTarget.dataset.data_path;
var data ={};
data[key] = defaultImage
self.setData(data);
}
最终的效果类似
self.setData({
"dest_country_group.item_list[2].img" : "默认图片地址"
});
注意这种写法在JS中,并不能达到效果,而是setData方法进行了处理,做了key解析
// // 解析 key 为 data 内对象的路径字符串 微信解析key的代码, 所有 Object类型只能用 .
//数组类型才可以用 [], 否则报 only number 0-9 could inside []
function parsePath(e) {
for (var t = e.length, n = [], i = "", r = 0, o = !1, a = !1, s = 0; s < t; s++) {
var c = e[s];
if ("\\" === c) s + 1 < t && ("." === e[s + 1] || "[" === e[s + 1] || "]" === e[s + 1]) ? (i += e[s + 1], s++) : i += "\\";
else if ("." === c) i && (n.push(i), i = "");
else if ("[" === c) {
if (i && (n.push(i), i = ""), 0 === n.length) throw new Error("path can not start with []: " + e);
a = !0, o = !1
} else if ("]" === c) {
if (!o) throw new Error("must have number in []: " + e);
a = !1, n.push(r), r = 0
} else if (a) {
if (c < "0" || c > "9") throw new Error("only number 0-9 could inside []: " + e);
o = !0, r = 10 * r + c.charCodeAt(0) - 48
} else i += c
}
if (i && n.push(i), 0 === n.length) throw new Error("path can not be empty");
return n
}
微信小程序5 - 数据驱动界面的更多相关文章
- 微信小程序我的界面
前言 感谢! 承蒙关照~ 微信小程序我的界面 界面效果: 界面结构: 小程序代码: 我们先看me.json代码 { "navigationBarTitleText": " ...
- 微信小程序之跨界面传参
微信小程序在两个之间传参类似js传递url拼接参数,举个例子来说吧 input自己设置参数 //index.wxml <form bindsubmit="formSubmit" ...
- 微信小程序开发--API界面交互
一.wx:showActionSheet(上拉菜单) 属性 类型 默认值 必填 说明 itemList Array.<string> 是 按钮的文字数组,数组长度最大为 6 itemC ...
- 微信小程序如何刷新当前界面
在微信小程序开发的过程中,在一个页面中对数据操作之后我们大多数时间都需要刷新一下当前界面以把操作之后的结果显示出来,但是如何在执行操作后进行本页面的刷新就成了一个问题很大但是很需要的操作.下面介绍一下 ...
- 迅雷首席架构师刘智聪:微信小程序的架构与系统设计的几点观感
笔者注:本文来自于迅雷首席工程师刘智聪的个人分享,他毕业于南昌大学化学系,加入迅雷后设计开发了多款迅雷核心产品,凭借“大规模网络流媒体服务关键支撑技术”项目获得2015年国家科学技术进步奖二等奖,同时 ...
- 微信小程序开发:http请求
在微信小程序进行网络通信,只能和指定的域名进行通信,微信小程序包括四种类型的网络请求. 普通HTTPS请求(wx.request) 上传文件(wx.uploadFile) 下载文件(wx.downlo ...
- [转]微信小程序开发:http请求
本文转自:http://www.cnblogs.com/dragondean/p/5921079.html 在微信小程序进行网络通信,只能和指定的域名进行通信,微信小程序包括四种类型的网络请求. 普通 ...
- 微信小程序开发中的http请求总结
在微信小程序进行网络通信,只能和指定的域名进行通信,微信小程序包括四种类型的网络请求. 普通HTTPS请求(wx.request) 上传文件(wx.uploadFile) 下载文件(wx.downlo ...
- 教你如何一键反编译获取任何微信小程序源代码(图形化界面,傻瓜式操作)
一键获取微信小程序源代码 Tips: 一键获取微信小程序源码, 使用了C#加nodejs制作 直接解压在D盘根目录下后就可以使用 将小程序文件放到 wxapkg目录下3 这个目录下有一些demo 可以 ...
随机推荐
- android简单的答题游戏
笔者最近开始沦陷于android,从开始入门到现在已经快半个月的时间,于是便写一个较综合,用到了数据库,多线程操作,以及时钟的添加和停止消除,activity之间的动画转换等,适用于初学者学以致用的小 ...
- OpenCV 之 霍夫变换
Hough 变换,对图像中直线的残缺部分.噪声.以及其它的共存结构不敏感,因此,具有很强的鲁棒性. 它常用来检测 直线和曲线 (圆形),识别图像中的几何形状,甚至可用来分割重叠或有部分遮挡的物体. 1 ...
- C/C++中传值和传地址(引用)
C/C++中参数传递有两种方式,传值或传地址(传引用),通常我们要在被调用函数中改变一个变量的值就需要传地址调用方式,例如: void swap_by_value(int a, int b) { in ...
- HTTP缓存策略 304
1.图解缓存 示例: 200 (from disk cache): 200 (from memory cache) MemoryCache顾名思义,就是将资源缓存到内存中,等待下次访问时不需要重新下载 ...
- ajax 异步 通信 小例子 servlet与 jsp异步 get
get 请求参数通过 url那里写进去,然后send(null) html文件和 servlet进行通信 通过ajax 进行通信 <!DOCTYPE html PUBLIC "-// ...
- CodeIgniter 无法上传 CSV 文件
本篇文章由:http://xinpure.com/codeigniter-unable-to-upload-a-csv-file/ 解决 CodeIgniter 中使用 Upload 类无法上传 CS ...
- Fragment的陷阱
以前做过的一个项目,Fragment嵌套高德地图,当再次进入Fragment的时候,会出现奇怪的现象.嵌套的地图会出现滑动不动的情况,起先还以为是高德的bug呢,经过一番研究,终确定这是一个坑. 先对 ...
- Python 多行注释
Python 使用" # ” 进行单行注释,本身不带多行注释. 但在编译器 PyCharm 中,可以用以下方法注释多行代码: 1.“选中一段要注释的代码——>Ctrl+ / ” 即可注 ...
- LaTeX数学公式输入
[置顶 Tips ] 在 WinEdt 中快速添加公式字符而不必手动打出一个个letters~: 即会出现如下 GUI Page Control : ------------------------- ...
- Oem7F7 通用完美激活v7.0绿色版 永久激活Windows7/2008
http://www.21andy.com/blog/20100906/1942.html