微信小程序模版渲染详解


Posted in Javascript onJanuary 26, 2018

微信小程序的界面程序支持html语法,多加了一部分标签,如view、block、templete等。

模版渲染
index.wxml

<view>
 <p>{{helloWord}}</p>
</view>

其中{{}}里面包含的内容你可以理解为一个变量,怎么让程序解析出{{helloWord}}变量

在index.js 中注册这个变量

var json = {
 data:{
  "helloWord" : "hello world"
 }
};

page(json)

然后我们运行小程序,就可以发现显示的就是hello world,即所有的变量都需要包含在注册界面的data中
有的人可能会问,怎么去动态的添加这些变量呢?

var json = {
 data:{
  "helloWorld":""
 },
 //监听页面加载
 onLoad:function(){
  var that = this;
  that.setData({
   "helloWorld":"hello world"
  })
 }
};
page(json)

甚至我们还可以

var json = {
 data:{},
 //监听页面加载
 onLoad:function(){
  var that = this;
  that.setData({
   "helloWorld":"hello world"
  })
 }
};
page(json)

都能实现相同效果,每次调用setData()函数的是够都会重新渲染一次页面。

index1.wxml

<view>
 <view wx:for="{{users}}" wx:for-item="{{item}}">
  <view wx:for="{{item}}" wx:for-index="{{key}}" wx:for-item="{{val}}">
    <p>{{key}}=>{{val}}</p>
  </view>
 </view>
 <view id="nameDemo">
  <p>name : {{users[0].name}}</p>
 </view>
 <view>
  <button bindtap="clickFunc">我是测试按钮</button>
 </view>
</view>

index1.js

var json={
 data:{},
 //监听页面显示
 onShow:function(){
  vat that = this;
  that.setData({
   users:[
    {
     "name":"name1",
     "age":100
    },
    {
     "name":"name2",
     "age":101
    }
   ]
  });
 }
};
page(json);

其中变量that的作用是对this的作用域的一个扩展。
wx:for 循环一个变量
wx:for-index 代表循环的键名
wx:for-item 代表循环的键值
users 在页面显示的时候动态的添加到了data作用域中。

现在我们再来看一个新的问题 如上id=”nameDemo” view中{{users[0].name}} 这个值我们怎么去动态的更改问题
有的可能说直接重新生成一个json直接渲染进去不就行了?
这种方案是可以的,但是要考虑到渲染的性能呀,如果每次调用都重新渲染一次,卡死你。
解决方案就是js的小技巧

只更改{{users[0].name}}的值

var json = {
 data:{},
 //监听页面显示
 onShow:function(){
  vat that = this;
  that.setData({
   users:[
    {
     "name":"name1",
     "age":100
    },
    {
     "name":"name2",
     "age":101
    }
   ]
  });
 },
 clickFunc:function(event){
  vat that = this;
  var dataJson = {};

  dataJson["users[0].name"] = "我是谁"; 
  that.setData(dataJson);
 }
}

其中bindtap 给button对象添加了一个点击事件,点击事件对应的函数是clickFunc 参数event数据结构如下

{ 
  "type": "tap", 
  "timeStamp": 1252, 
  "target": { 
   "id": "tapTest", 
   "offsetLeft": 0, 
   "offsetTop": 0
  }, 
  "currentTarget": { 
   "id": "tapTest", 
   "offsetLeft": 0, 
   "offsetTop": 0, 
   "dataset": { 
   "hi": "MINA" 
   } 
  }, 
  "touches": [{ 
   "pageX": 30, 
   "pageY": 12, 
   "clientX": 30, 
   "clientY": 12, 
   "screenX": 112, 
   "screenY": 151 
  }], 
  "detail": { 
   "x": 30, 
   "y": 12 
  } 
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Extjs学习过程中新手容易碰到的低级错误积累
Feb 11 Javascript
jQuery学习笔记之Helloworld
Dec 22 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
Feb 26 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
Dec 15 Javascript
jQuery实现网站添加高亮突出显示效果的方法
Jun 26 Javascript
使用AJAX实现Web页面进度条的实例分享
May 06 Javascript
VUE2.0中Jsonp的使用方法
May 22 Javascript
AngularJS自定义表单验证功能实例详解
Aug 24 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
Sep 05 Javascript
使用imba.io框架得到比 vue 快50倍的性能基准
Jun 17 Javascript
vue实现百度搜索功能
Dec 28 Javascript
JavaScript实现指定数量的并发限制的示例代码
Mar 10 Javascript
微信小程序如何获取用户信息
Jan 26 #Javascript
vue实现前进刷新后退不刷新效果
Jan 26 #Javascript
Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能
Jan 26 #Javascript
微信小程序实现图片压缩功能
Jan 26 #Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
Jan 25 #Javascript
Laravel整合Bootstrap 4的完整方案(推荐)
Jan 25 #Javascript
jquery根据name取得select选中的值实例(超简单)
Jan 25 #jQuery
You might like
php 获取一个月第一天与最后一天的代码
2010/05/16 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
PHP实现腾讯与百度坐标转换
2017/08/05 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
2018/05/12 PHP
PHP输出Excel PHPExcel的方法
2018/07/26 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
JavaScript DOM学习第一章 W3C DOM简介
2010/02/19 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
jQuery点击tr实现checkbox选中的方法
2013/03/19 Javascript
js简单抽奖代码
2015/01/16 Javascript
js制作简易年历完整实例
2015/01/28 Javascript
推荐10 个很棒的 jQuery 特效代码
2015/10/04 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
javascript insertAfter()定义与用法示例
2016/07/25 Javascript
JS图片压缩(pc端和移动端都适用)
2017/01/12 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
微信小程序 Buffer缓冲区的详解
2017/07/06 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
2018/08/06 Javascript
JavaScript的词法结构精华篇
2018/10/17 Javascript
浅谈Javascript中的对象和继承
2019/04/19 Javascript
JS实现的简单tab切换功能完整示例
2019/06/20 Javascript
pycharm 使用心得(九)解决No Python interpreter selected的问题
2014/06/06 Python
Python入门_学会创建并调用函数的方法
2017/05/16 Python
flask框架视图函数用法示例
2018/07/19 Python
python os.path模块常用方法实例详解
2018/09/16 Python
Python图像处理二值化方法实例汇总
2020/07/24 Python
公认8个效率最高的爬虫框架
2020/07/28 Python
解决pytorch 保存模型遇到的问题
2021/03/03 Python
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
canvas实现滑动验证的实现示例
2020/08/11 HTML / CSS
高考学习决心书
2015/02/04 职场文书
美术教师个人总结
2015/02/06 职场文书
退休职工欢送会致辞
2015/08/01 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书