需求如下:通过点击按钮动态切换 placeholder 提醒文字的颜色
方案一,使用'placerholder-class',模拟器和真机均有效,代码如下:
<view class="container"> <view> <button bindtap="setPlaceholderClass" data-color="red"> red |
margin-top: 30px; width: 100%;}.red { color: red;}.green { color: green;}.blue { color: blue;} |
const app = getApp()Page({ data: { show: true, className: 'red' }, setPlaceholderClass: function (e) { this.setData({ className: e.target.dataset.color }); }}) |
方案二,使用'placerholder-style', 模拟器有效,真机无效
直接使用该属性发现在手机上切换之后 placeholder 的颜色并没有改变,此时如果通过手动让 input 获取焦点的方式,会发现 input 的 placeholder 颜色触发更新;
分析原因是直接修改 placeholder-style 之后没有触发 input 组件的更新机制,所以下面的方式通过 wx:if 手动触发更新,实现相同效果,代码如下:
<view class="container"> <view> <button bindtap="setPlaceholderClass" data-color="red"> red
|
const app = getApp()Page({ data: { show: true, className: 'color:red' }, setPlaceholderClass: function (e) { var self = this; self.setData({ show: false, className: 'color:' + e.target.dataset.color }); setTimeout(function() { self.setData({ show: true }); }, 20); }}) |
欢迎补充~
