[技术博客]微信小程序开发中遇到的两个问题的解决

时间:2023-01-20 23:17:37

IDE介绍

微信web开发者工具

前端语言

微信小程序使用的语言为wxml和wss,使用JSON以及js逻辑进行页面之间的交互。与网页的html和css略有不同,微信小程序在此基础上添加了自己的改进,变得更加具有微信特色。

实现添加标签时自动联想

前端wxml中采用了wx:if来控制标签是否显示。我们在js中定义了一个大的字典来存放每个变量,并且在每个变量中跟了一个布尔值来判断是否显示。

wxml代码中首先对搜索的联想结果判断了是否显示,并且对标签也判断了是否显示。wxml代码如下:

<input type='text' class = "ipsel" confirm-type='search' bindinput='input1' bindconfirm='confirm1' bindblur='noblur'  value = "{{tei}}"></input>

<view wx:for="{{hosList}}" wx:for-item="h">

  <view data-text =  "{{h.name}}" wx:if="{{h.show}}" catchtap='clicsho'>{{h.name}}</view>

</view>

   <view class="comment-btn">

        <button 

            wx:for="{{riderCommentList}}"
wx:for-item="item"
wx:key="item.index"
bindtap="checkboxChange"
data-value="{{item.value}}"
data-index="{{index}}"
checked="{{item.selected}}"
class="btn {{item.selected ? 'btn-selected' : ''}}"
wx:if = "{{item.selected}}">
{{item.title}}❌
</button> </view>

在js逻辑中,我们每次得到输入框中的文字有变化,就调用input1函数,在这个函数中,我们将读到的数据存进this.data中,并且根据这个进行搜索。

input1: function (e) {
this.setData
({
tei: e.detail.value
})
this.serch(e.detail.value)
},

搜索过程如下:我们在标签列表中按照关键词搜索serch域,如果找到了,那么将这个标签的布尔值赋值为true,这样他就会显示在标签里。

  serch: function (key) {
var that = this;
var arr = [];
console.log("assss"+key)
for (let i in that.data.hosList1) {
that.data.hosList1[i].show = false;
if (that.data.hosList1[i].serch.indexOf(key) > 0) {
that.data.hosList1[i].show = true;
arr.push(that.data.hosList1[i])
}
}
console.log(arr)
this.setData({
hosList: arr,
})
},

点击搜索结果后,把显示的所有联想结果关掉,并将输入框中内容清空,同时,将选择的标签的布尔域设置为true。

clicsho: function (e) {
var that = this;
console.log(e);
var tti = e.currentTarget.dataset.text;
for(var i = 0; i< that.data.riderCommentList.length; i++)
{
if (that.data.riderCommentList[i].value == tti)
{
let string = "riderCommentList["+i+"].selected";
that.setData
({
[string]: true,
})
}
}
this.setData
({
tei: "",
hosList: []
})
},

解决前端页面传参时保留字无法传递问题

前端页面传参时,通过json.stringify来传递参数,这个时候,如果遇到了传递的字符串中存在&、!等情况的时候,传递过去的值就会在此处断掉,导致进入下一个页面报错。

var para = JSON.stringify(can);
wx.navigateTo({
url: '../homeson/homeson?info=' + para,
})

解决方法

传参前加入下面代码:

para = encodeURIComponent(para)

下一页面调用前加入下面代码:

var kk = decodeURIComponent(options.info)
this.data.info = JSON.parse(kk);

通过encodeURIComponent可以将字符串中的保留字进行编码,用特定的编码替换,从而在参数传递过程中解决保留字无法传递问题,decodeURIComponent可以将编码后的保留字替换回来,从而在显示的时候按照传递前进行显示。

[技术博客]微信小程序开发中遇到的两个问题的解决的更多相关文章

  1. 技术博客——微信小程序UI的设计与美化

    技术博客--微信小程序UI的设计与美化 在alpha阶段的开发过后,我们的小程序也上线了.看到自己努力之后的成果大家都很开心,但对比已有的表情包小程序,我们的界面还有很大的提升空间,许多的界面都是各个 ...

  2. 技术博客--微信小程序canvas实现图片编辑

    技术博客--微信小程序canvas实现图片编辑 我们的这个小程序不仅仅是想给用户提供一个保存和查找的平台,还希望能给用户一个展示自己创意的舞台,因此我们实现了图片的编辑部分.我们对对图片的编辑集成了很 ...

  3. 技术博客——微信小程序的架构与原理

    技术博客--微信小程序的架构与原理 在两个月的微信小程序开发过程中,我曾走了不少弯路,也曾被很多现在看来十分可笑的问题所困扰.这些弯路与困扰,基本上都是由于当时对小程序的架构理解不够充分,对小程序的原 ...

  4. &lbrack;技术博客&rsqb; 微信小程序的formid获取

    微信小程序的formid获取 formId的触发 微信小程序可以通过收集用户的formid,获取formid给用户主动推送微信消息.获取formid有两个途径,一个是触发一次表单提交,或者触发一次支付 ...

  5. &lbrack;技术博客&rsqb;微信小程序审核的注意事项及企业版小程序的申请流程

    关于小程序审核及企业版小程序申请的一些问题 微信小程序是一个非常方便的平台.由于微信小程序可以通过微信直接进入,不需要下载,且可使用微信账号直接登录,因此具有巨大的流量优势.但是,也正是因为微信流量巨 ...

  6. 总结微信小程序开发中遇到的坑

    总结微信小程序开发中遇到的坑,一些坑你得一个一个的跳啊,/(ㄒoㄒ)/~~ 1,页面跳转和参数传递实例 首先说一下我遇到的需求有一个我的消息页面,里面的数据都是后端返回的,返回的数据大致如下,有一个是 ...

  7. 解决微信小程序开发中wxss中不能用本地图片

    微信小程序开发中wxss中不能用本地图片,我们可以用将我们的图片传到服务器上,然后直接引用在线地址.但是当我们没有服务器时,我们可以用"图床",这个具体可以百度.这里我们用第二种方 ...

  8. 微信小程序开发中的二三事之网易云信IMSDK DEMO

    本文由作者邹永胜授权网易云社区发布. 简介 为了更好的展示我们即时通讯SDK强悍的能力,网易云信IM SDK微信小程序DEMO的开发就提上了日程.用产品的话说就是: 云信 IM 小程序 SDK 的能力 ...

  9. 关于微信小程序开发中遇到的缺少game&period;json问题的解决

    一.小程序开发的两种选项 ①小游戏开发:内部对应的入口配置文件为game.json丶game.wxml之类的文件或者项目. ②小程序开发:内部对应的入口配置文件为app.json丶app.wxml之类 ...

随机推荐

  1. 菜鸟的Python学习之路(流水账)

    揭开Python的面纱 开始是因为别人说Python简单才开始学的,然后那段时间刚考完研,也没什么事,就多少瞅了瞅,然后发现语法的确简单很多,或者说简洁更合适. 当时看的是简明Python教程,没用多 ...

  2. 嵌入式Linux的调试技术

    本节我们研究嵌入式Linux的调试技术,对于复杂的Linux驱动及HAL等程序库,需要使用各种方法对其进行调试.刚开始讲了打印内核调试信息:printk,这个函数的用法与printf函数类似,只不过p ...

  3. 阅读笔记Multi-task Learning for Stock Selection &lbrack;NIPS1996&rsqb;

    Multi-task Learning for Stock Selection  Joumana Ghosn and Yoshua Bengio 摘要 用人工神经网络预测未来回报以便于做出对应的金融决 ...

  4. Android学习笔记(一)&mdash&semi;&mdash&semi;安卓开发环境搭建

    安装教程以及资源(2015.11.8最新版):链接:http://pan.baidu.com/s/1kTnOsMr 密码:0ogf

  5. Swift游戏实战-跑酷熊猫 07 平台的移动

    这节内容我们来实现平台是怎么产生移动动画的. 要点 1 利用数组存放平台 var platforms=[Platform]() 2 有新的平台产生存放进数组 platforms.append(plat ...

  6. python2 httplib 笔记

    python2  httplib 笔记 #coding=utf-8 ''' Created on 2014年9月25日 @author: cocoajin ''' import httplib,url ...

  7. Ubuntu 12&period;04 中安装和配置 Java JDK

    先去 Oracle下载Linux下的JDK压缩包,我下载的是jdk-7u4-linux-i586.tar.gz文件,下好后直接解压 sudo mv ./jdk1.7.0_55 /usr/lib/jdk ...

  8. 微信JS-SDK使用权限签名算法的服务端实现&lpar;&period;net版本&rpar;

    原文:微信JS-SDK使用权限签名算法的服务端实现(.net版本) 一.概要 微信此次开放JS接口,开放了一大批api权限,即使在未认证的订阅号也可以使用图像接口,音频接口,智能接口,地理位置,界面操 ...

  9. CSS下背景属性background的使用方法

    背景颜色(background-color) CSS可以用纯色来作为背景,也可以将背景设置为透明,background相当于xhtml中的bgcolor. 它的两个值: transparent(默认值 ...

  10. python爆破zip脚本

    最近在提高自己编程能力,拿一些实用的小工具练下.该脚本为python语言,主要涉及模块zipfile,threadings模块. 功能:暴力猜解zip解压密码 #coding: utf-8 impor ...