范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Django微信小程序开发待办清单多选框与数据绑定

  初学某种编程语言时,很多人会从手撸一个Todo-List(待办清单)开始。
  咱们也不能免俗,从本章开始,先撸个单机版 Todo-List ,再逐步拓展为 Web 版本。 准备工作
  我们在创建小程序项目时,开发工具"好心"送了些示例代码。
  它是一个获取用户登录数据的小 Demo 。如果你的新版开发工具没有给示例代码,那则无视之。
  因此首先将  app.wxss   和  pages/index/index.wxss   中的代码清空,免得它们捣乱。它们分别是全局和页面的样式文件,控制着页面元素的外观。
  接下来修改  app.json   文件: // app.json  {   // ...   // 修改字段   "window": {     // ...     "navigationBarBackgroundColor": "#6495ED",     "navigationBarTitleText": "Todo-List",     // ...   },   // ...   // 新增字段   "useExtendedLib": {     "weui": true   } }
  app.json   是全局配置文件,控制着项目的基本属性。
  "window"   字段指定了小程序的字体颜色、导航栏样式等等属性。这里我们将导航栏的背景修改为淡蓝色,将页面标题修改为 Todo-List 。保存文件后,开发工具左侧的 手机模拟器 会自动更新,可以发现导航栏已经变为蓝色了。
  "useExtendedLib"   指定了本项目要使用扩展库  WeUI   。 WeUI   是官方提供的一套 UI 样式库,用过  Bootstrap   的朋友上手起来会比较快。 原生的 UI 实在有点难用(且丑)。类似 WeUI 的样式库还有很多,这个就读者以后去探索了。
  扩展库的概念类似于 Python 开发时用 pip 安装第三方库,不同的是扩展库并没有将三方库安装到程序包中,而是对公共资源的某种"引用"。因此使用扩展库的好处是它不占小程序自己的体积,但是缺点是目前支持的库非常的少,WeUI 就是其中之一。
  小程序的体积应当尽可能小。体积小的好处是首次启动时加载时间较短,用户体验佳。另一方面是因为微信规定小程序有体积上限,超过上限是无法部署到线上的。见小程序最大体积。
  准备工作这样就完成了,接下来开始撸正经代码。 WXML模板
  从事过网页编程的人知道,网页编程采用的是 HTML + CSS + JS 这样的组合,其中  HTML   描述页面的结构, CSS   描述页面的样子, JS   处理页面和用户的交互。
  在小程序中也有同样的角色,其中  WXML   充当的就是  HTML   的角色。
  根据  app.json   中的配置可知, pages/index/   是小程序的首页。因此首先清空  pages/index/index.wxml   的内容,然后写入下面的神秘文字:                              是小程序中的最基础的视图容器,类似 HTML 的标签  p   。此外小程序还提供了  button   ,  text   等等标签,以及地图、视频、音频、扫码等等开放能力。 与传统网页开发不同,小程序的模板可以包含  if   、  for   等逻辑控制语法。比如上面的  wx:for="{{items}}"   语句,意思是循环渲染 items 容器中的元素(items后面马上会定义)。 {{}}   花括号表示这里不是一个普通的字符串,而是实实在在的数据。  wx:key   用于帮助模板引擎识别每个 items 元素,类似于数据库中的主键。    是多选框控件整体。 bind:change="checkboxChange"   意思是监听多选框控件的状态,每当其内容发生变化时,立即调用  checkboxChange()   方法(此方法后面马上会定义)。 bind:change   是监听控件事件的内置固定写法,类似的还有按钮的  bind:tap   、输入框的  bind:input   等等。    为多选框的实际单个元素。 value   为其绑定的数据, checked   属性表示它是否被选中。
  除此之外,代码里还有很多类似  weui-cells/weui-cell__bd   之类的属性,这个就是 WeUI 提供的美化 UI 控件外观的样式了,有需要对照WeUI文档抄过来即可,和 Bootstrap 差不多,就不展开讲了。读者可以尝试把这些属性删除后,看看多选框外观的变化。 JS逻辑层
  上面的  WXML   中出现了两个非常关键的东西: items   ,它是数组类型的数据,提供多选框循环渲染所需的内容。 checkboxChange()   方法,它的作用是监听多选框的状态,一但发生变化则执行某些逻辑处理。
  在传统的网页开发中,接下来就应该在页面底部写 Javascript 脚本,定义这些数据和方法了。但小程序强大的地方在于:它将视觉外观的渲染,和逻辑层彻底拆开了,各司其职。
  来实际体验下。清空  pages/index/index.js   中的示例代码,写入下面这一坨: // pages/index/index.js  Page({   // 页面持有的状态数据   data: {     items: [{         id: 3,         content: "和丢丢去超市买白菜",         checked: false,       },       {         id: 2,         content: "周二和老王吃烧烤",         checked: false,       },       {         id: 1,         content: "凌晨给老板汇报工作",         checked: false,       }     ],   },    // 监听多选框的状态改变事件   checkboxChange(e) {     // 页面持有的数据     // 获取本地数据的写法为 this.data.xxx     const items = JSON.parse(JSON.stringify(this.data.items))     // checkbox持有的数据     const values = e.detail.value     // 将items和values进行对比     // 根据values的值更新页面数据(即data.items)     for (let i = 0, lenI = items.length; i < lenI; ++i) {       items[i].checked = false       for (let j = 0, lenJ = values.length; j < lenJ; ++j) {         // values[j]是String         // 将其转换为Int         if (items[i].id === parseInt(values[j])) {           items[i].checked = true           break         }       }     }     // 更新数据     this.setData({       items: items     })            // 打印的内容会展现在调试器中     console.log(this.data.items)    }, })
  分解上面的内容: 小程序的每个页面,都需要在对应的  js   文件中进行注册,指定页面的初始数据、生命周期回调、事件处理函数等。所以你可以看到,这个 js 文件中所有代码都是在页面构造器  Page()   中的。 data   字典对象,它持有了当前页面所有的 本地状态 。大多数情况下,你都应该将数据放到这里集中管理。一但其中的数据发生变化,小程序能够感知到并且立即自动更新页面中对应的元素。这种模式简化了程序员智力负担,你不再需要手动更新页面使其和数据相对应。这也就是传说中的 数据绑定 ,或者叫 数据驱动 了。
  页面中所有需要用到的方法也都定义在  Page()   构造器中,比如  checkboxChange()   。几个值得关注的地方: 它的参数  e   是多选框控件传递进来的,包含整个控件的状态和数据。你可以用  console.log(e)   打印看看里面的内容。 方法用了两个 for 循环检查了多选框的状态,如果当前条目被选中则将 items 中对应的条目设置为 已选中 ( .checked = true  ),如果未被选中则设置为  .checked = false   。 调用 Page 构造器内置的方法  this.setData({...})   更新数据,以键值对的方式给出。注意页面持有的状态必须用  this.setData()   , 不能手动更新 (比如用等号赋值),否则将导致渲染不同步等 bug 。 赋值局部变量时用  JSON.parse(JSON.stringify(...))   实现了深拷贝。如果这里直接用等号赋值  const items = this.data.items   ,仅仅是传递了对数据的"引用"(浅拷贝),在后续操作中将违背"不能手动更新本地状态"的原则。
  这就大功告成了。
  注意到没有,逻辑层只关注了  data   中数据的状态。至于更新渲染的工作,框架自动帮你完成了。
  保存文件,重载模拟器效果如下:
  神奇吧。强烈建议第一次接触数据驱动模式的读者在这里停一下,对比观察  wxml   和  js   文件中各个控件、事件、数据、方法之间的对应关系。 Component构造器
  上面用的  Page   构造器适用于简单的页面,对于复杂的页面它可能并不好用。
  幸好小程序还提供另一种选择:  Component   构造器。虽说  Page   和  Component   有很多细节上的差别,但就目前这个简单的例子来说,唯一的区别是:方法需要放在  methods: { }   里面。
  试试改造它: // pages/index/index.js  Component({   data: {     items: [...]   },    methods: {     checkboxChange(e) {       // ...     }   }, })
  功能完全一致。
  后续章节将以  Compnent   构造器为主讲解,想了解它两更多区别和细节的可参考文档。 总结
  现在我们有个可以瞎点来点去的多选框列表了。但这没用啊,它只是个固定内容的小玩意。
  下一章继续探讨小程序的数据输入,让示例真正动起来。
  点赞 or 吐槽?来博客或GitHub评论区!

原来手机飞行模式作用这么多,以前都不了解,天天都能用得上大家好,我是妙妙,很多人会好奇手机上的飞行模式是不是只能在坐飞机的时候用到呢?它除了在坐飞机的时候要开启,别的情况还能开启飞行模式吗?想要了解飞行模式具体用途的话,可以跟着妙妙的文水煮蛋会引起骨质疏松?鸡蛋不能每天吃?不妨了解一下研究发现,骨质疏松症是一种与增龄相关的骨骼疾病,也是一种无声无息的疾病,通常被称为沉默的杀手,因为大多数患者在早期没有任何症状,乃至发生骨折才能够得到诊治。截至目前,骨质疏松已成为女人上了年纪,春夏少穿打底裤运动鞋,太土!这样穿更洋气显瘦很多女性在伴随着年龄增长的压力时,都会想要不被岁月所打败,因此都会十分在意自己的外在形象与穿衣打扮。无论是容貌的保养还是维持一副好身材,都需要付出常人无法想象的坚持与耐力。但是这一2022年3月24日今日鸡蛋价格此为贸易商价格非终端价格,参考蛋价今日价净重今天全国稳定偏多,跌价区下降,只有红蛋偏弱,粉蛋走货好转,部分地区红蛋价已经很低,高价区红蛋没有看到跌势,低价区红蛋更不应该出现下跌,节头发最好不要染,日常多吃这4种食物,或可以让白头发少一些随着年龄不断的增长,身体出现出现一些衰老的迹象,比如记忆力下降,皱纹,白发等。对于以了年龄的人群,出现白发是很正常的一种现象,但是让大家害怕的是,很多年轻人头发也长出了白发,难道是人到中年,悲苦自渡老人与海里有这样一段话生活总是让我们遍体鳞伤,但到后来,那些受伤的地方一定会变成我们最强壮的地方。人活着,难吗?也许很多人的回答都会是这样一个字难。经历了年少的青春飞扬,经历了成长这4种食物是天然胰岛素,医生日常经常吃它们,稳定血糖随着社会的不断发展,如今人们在饮食上的选择越来越多,但这种情况可能也会对身体造成不利的情况。因为如果经常食用高脂肪高糖淀粉类的食物,很可能会导致体重上升,诱发肥胖,增加人们患高血糖5346再到绝杀!丁俊晖艰难拿下,33月24日晚上,直布罗陀公开赛第一轮,中国名将丁俊晖出击,对阵劳埃德,进行较量。第一局就跟对手陷入僵持之中,打出209后,进攻中断。小丁在上手,连续打进红黑的组合,然后打进红球到左晚上几点睡觉,才算是熬夜?经常晚睡,可尝试2种方法弥补人的一生,大约有三分之一的时间都会在床上度过,而睡眠质量的高低,也是和我们的健康息息相关的,拥有健康的睡眠,意味着身体自愈能力强,各个器官和组织运转畅通,也更不容易得病。但相对的,我不是外资,别误伤民族品牌!今麦郎发声证清白,真实情况呢超市的货架上,陈列最多的方便面品牌是什么?康师傅统一白象今麦郎四大品牌几乎垄断了所有的货架。但随着今年3。15晚会曝光了土坑酸菜不堪入目的制作过程,让老百姓大为震惊,不敢相信这就是肺部有结节,晚上或会有4个症状,不妨自查一下,别不当回事日常生活当中查出肺结节的人越来越多,这是因为现在的医疗设施都非常先进,对于微小的病灶能够很清楚地检测出来。现在人们对身体的健康非常重视,所以更容易发现这类疾病,大多数的肺结节都属于
歌尔碰了苹果的红线?日前,中国电子产业链发生了一场风暴电声巨头歌尔遭遇某境外大客户砍单,营收减少33亿元,股价连吃跌停。虽然没有明说,但业内人士都清楚境外大客户就是苹果。较主流的原因分析良率数据作假,赛日头条沈廄浪漫阅兵日沈廄浪漫阅兵日沈集成训练的上季最佳中距离马浪漫勇士,本星期日复出竞逐中银香港马会杯,此驹近5次出赛,沈廄皆有其他马匹同日胜出。今次赛事沈廄将派出数匹近绩良好的赛驹上阵,会否取得一日我国适合年轻人发展的4座城,房价低收入高,比在北上广深流泪强我国的城市众多,说起适合年轻人发展的城市,很多人的答案只有北上广深。但是,只有这些年轻人在北上广深流过眼泪以后,才会知道自己当初的选择有多么的荒谬。现在的年轻人不再扎堆往一线城市跑男足为什么会变现在这个样子造成男足现状的根本原因是什么?首先,我的头条名,就是因为经历了看中国足球对足球失望重拾希望再度失望也不知道循环几次了,但始终是永怀希望的中国球迷。大学时期,深夜看土伦杯和世青赛,当IOS微信8。0。30更新,有这7个变化!你升级了吗?微信又能更新了?没错,这次是针对苹果iphone上的微信版本更新。微信更新得还挺勤快啊,距离上次更新到现在还不到两个月,前几天又正式发布了IOS8。0。30版本。这次是一些小更新和如果没有这两个缺点,香兰素的应用可以更广泛关注我们,关心芳香产业!在最近的新闻中,亚香股份谈到可能会改进工艺方法生产香兰素,在自身现有的丁香酚阿魏酸香兰素因公司上市须压降产销量的情况下,争取扩大香兰素产品的市场份额。业内众以岭药业大涨带来了什么启示?当下什么最牛,我想炒股的朋友们会异口同声地说以岭药业!自从放松20条出来,自从国际庄成为第一个吃螃蟹的城市,尽管我们距离完全放开还有相当长的时间,然而市场已经在提前演练真实放开的场硅谷华人,梦醒裁员潮尽管硅谷的气候四季如春,但打工人却迎来了他们的寒冬。从11月4日开始,马斯克推下了硅谷裁员的第一张多米诺骨牌,推特Meta亚马逊巨头们相继被曝大裁员。提前三天消息就已经沸沸扬扬,我为什么要去角质?去角质有什么好处?什么是角质层?皮肤是人体最大的器官,主要承担着保护身体排汗感觉冷热和压力的功能,分为真皮层和表皮层,真皮层里面是胶原蛋白为皮肤提供弹性,表皮层里面分为5层,最外面一层就是角质层。角好用的睫毛膏推荐,让你轻松拥有太阳花睫毛,建议收藏大家常说眼睛是心灵的窗户,那么眼妆就是整个妆容当中最重要的一步,如何放大双眼让眼妆更深邃呢?拥有卷翘又持久的睫毛就成了重中之重,所以选择一个好的睫毛膏就是我们今天的内容,给大家分享有社保了,为什么还要买商业保险?我们有很多人说我有社保了,我还要买商业保险干嘛?乍一看,这句话挺有道理,但如果您知道社保是如何报销的之后,相信你可能就不这么说了,否则商业保险机构我就应该取缔了,你说是不是?接下来