今天在写微信小程序时,被坑到了,

<!--.wxml->
<view class="row-in {{to_top ? 'to-top' : 'to-bottom'}}">...
</view>

本意是想做一个简单的动态页面的,在用户点击按钮的时候,菜单会进行一个上滑置顶:

/*.wxss*/
.row-in {display: flex;flex-direction: row;justify-content: space-around;background: #f3f2f27c;
}
.to-bottom {padding: 320rpx 0 10rpx 0;
}
.to-top {padding: 30rpx 0 10rpx 0;
}
//.js
Page({data: {to_top: false,}
})

调试的时候发现不管怎么改这个三元运算符,它显示的都只是‘:’前的那个,如代码中的’to-top’。

改了很久,不知道问题在哪里,百度也没有找到解决办法。

只好换一种写法:

<!--.wxml->
<view class="{{to_top}}">...
</view>
/*.wxss*/
.row-in {
}
.to-bottom {display: flex;flex-direction: row;justify-content: space-around;background: #f3f2f27c;padding: 320rpx 0 10rpx 0;
}
.to-top {display: flex;flex-direction: row;justify-content: space-around;background: #f3f2f27c;padding: 30rpx 0 10rpx 0;
}
//.js
Page({data: {to_top: "to-top",}
})

如上修改后问题解决了,但用不了三元运算符还是很不满意。

个人猜测可能是代码在动态加载时的次序先后,导致的这个问题。如果知道是为什么,怎么解决的朋友欢迎留言告诉我,感谢!


2019-1-8补充(解决问题)

wxml

<view class="{{to_top}}">
</view>
<button bindtap='change_position'>改变位置</button>

wcss

.to-bottom {display: flex;flex-direction: row;justify-content: space-around;background: #000;padding: 320rpx 0 10rpx 0;
}
.to-top {display: flex;flex-direction: row;justify-content: space-around;background: #000;padding: 30rpx 0 10rpx 0;
}

js

Page({data: {to_top: "to-top",},change_position: function(){var that = thisconsole.log("change position " + that.data.to_top)this.setData({to_top: that.data.to_top == "to-top" ? "to-bottom":"to-top"})}
})

上面的页面在运行时是成功的:

使用三元运算符:

<view class="{{to_top ? 'to-top' : 'to-bottom'}}">
</view>
<button bindtap='change_position'>改变位置</button>
.to-bottom {display: flex;flex-direction: row;justify-content: space-around;background: #000;padding: 320rpx 0 10rpx 0;
}
.to-top {display: flex;flex-direction: row;justify-content: space-around;background: #000;padding: 30rpx 0 10rpx 0;
}
Page({data: {to_top: false,},change_position: function(){var that = thisconsole.log("change position " + that.data.to_top)this.setData({to_top: that.data.to_top ? false:true})}
})

运行时也成功了:

使用style设置:

<view class="to-top" style='padding-top: {{to_top? "30rpx":"320rpx"}};'>
</view>
<button bindtap='change_position'>改变位置</button>
.to-top {display: flex;flex-direction: row;justify-content: space-around;background: #000;padding: 30rpx 0 10rpx 0;
}
Page({data: {to_top: false,},change_position: function(){var that = thisconsole.log("change position " + that.data.to_top)this.setData({to_top: that.data.to_top ? false:true})}
})


最后也成功了,我记不得当时是不是忘记了用setData。但是现在使用已经都无误了。这种动态改变布局的方法配合上pisition的设置是可以做出很漂亮的布局的。

既然问题解决了,我就把博客名字改成,使用三元运算符动态渲染了。

最后非常感谢weixin_43954744在评论留言提示。

微信小程序 使用三元运算符动态渲染布局相关推荐

  1. 三元运算 微信小程序_微信小程序使用三元运算符代替wx:if

    以地址列表中,默认地址是否选择为例. 先来看下wx:if的写法 默认地址 从上面的代码可以看出,标签要重复写2次,包括class样式等属性,设定某个地址为默认地址时将会有绑定事件bindtap等,还会 ...

  2. 微信小程序获取数据接口动态渲染Echarts折线图

    上篇文章介绍的是最简单的折线图配置方法,若是放到开发的项目中还需要进行一些改动,比如,如何调用接口获取数据动态渲染折线图: 为了更好的体验项目开发中调取接口获得数据渲染折线图,我让朋友给我开发了接口模 ...

  3. 微信小程序使用三元运算符

    样式的三元运算符的展示 针对wxml中的style的三元运算符 <!-- 背景色根据获取的不同值进行调整 --> <view class="swmc" style ...

  4. 微信小程序使用echarts绘画动态图表

    微信小程序使用echarts绘画动态图表 首先我们从官网下载echarts插件,路径是https://github.com/ecomfe/echarts-for-weixin,把echarts文件放到 ...

  5. 微信小程序给echarts图表动态赋值

    微信小程序给echarts图表动态赋值 接上一篇:微信小程序引入echart图表 直接上例子(运行需要结合上一篇,拉至文章顶部进入): import * as echarts from '../../ ...

  6. 微信小程序:block制作动态商品列表

    微信小程序:block制作动态商品列表 在制作微信小程序时,我们往往会碰到需要动态生成列表的情况,本文便是以常见的商品列表为例来学习如何利用block制作动态商品列表. 运行截图 实现代码 js: P ...

  7. 微信小程序之获取后台动态数据表格布局display:table

    微信小程序之获取后台动态数据表格布局display:table 猿来独往 2018-09-02 本文没有采用flex布局和grid布局来设置表格的,而是通过 display: table;来设置. 一 ...

  8. 微信小程序之数据的同步渲染

    微信小程序之数据的同步渲染 结论: 微信小程序通过setData方法实现数据的同步渲染,直接修改data无法实现同步渲染. setData工作原理 小程序分为逻辑层和渲染层,而每次逻辑层改变了,要借用 ...

  9. 微信小程序 - WXML 模板语法 - 条件渲染

    1.wx:if (1)在微信小程序中,使用 wx:if="{{condition}}" 来判断是否需要渲染该代码块: <view wx:if="{{conditio ...

最新文章

  1. 完善Linux/UNIX审计 将每个shell命令记入日志
  2. 宝塔mysql远程链接_宝塔apache启动失败:报错 AH00526: Syntax error on line 解决方案
  3. [Linux]NAT和代理服务器
  4. leetcode题库:2.两数相加
  5. vue_axios请求封装、异常拦截统一处理
  6. Pro*C/C++简单介绍
  7. X509证书中RSA公钥的提取与载入
  8. kafka--Struct Streaming--hdfs案例
  9. php继承 重写方法吗,PHP中的继承与重写
  10. ISO50001认证辅导,ISO50001能源管理体系认证至少符合以下条件
  11. Wowza服务器系列(1):介绍
  12. Spring Security 与 OAuth2(资源服务器)
  13. CC2420芯片手册核心知识点
  14. python中控脚本_python连接中控考勤机分析数据
  15. HDU - 3966 树链刨分
  16. pythonmacd指标编写_利用python编写macd、kdj、rsi、ma等指标
  17. 安装杀毒软件后计算机运行速度慢,ThinkPad运行速度慢怎么办
  18. 重构不是阳春白雪的高端玩意,而是码农编程利器
  19. 计算机硬件配置与bios设置,bios查看电脑配置 bios查看电脑的详细配置
  20. Adaptive Bilateral Filter for Sharpness Enhancement and Noise Removal 阅读理解

热门文章

  1. win10+VS2012+opencv2.4.11的安装和配置
  2. 谷歌搜索通告:疫情期间不要关站会影响网站排名
  3. Tech Talk 宣传 | 如何高效、极简构造无服务器 Web 应用
  4. 硬盘存储结构及分区简介
  5. 撼龙图怎么开鸿蒙炁灵,一人之下藏金图技巧-一人之下撼龙藏金图高概率出绝世炁灵技巧...
  6. cocos2d关于延时的实现
  7. ECONOMICS REPORT - The United States Postal Service Warns of Default
  8. 序列标注NER、POS、Chunking、SRL
  9. 跟随艺术家林曦的脚步 学习“只生欢喜不生愁”的生活态度
  10. 2018年买华硕笔记本 安装 Fedora 28,pcieport errors flood the journal