WeUI Picker动态绑定数据与Zepto加载顺序问题

作者:工具松鼠

时间:2026-10-23

浏览:509

本文介绍在WeUI中使用Picker组件时,如何通过JavaScript动态绑定数据。核心方案是移除并重建input标签以触发组件重新初始化。同时指出一个常见陷阱:Zepto.min.js必须置于头部加载,否则动态操作会失效。

文章目录

WeUI Picker动态数据绑定解决方案

针对该问题的解决思路是:由于Picker和Select组件依赖于input标签进行绑定,可以通过操作input的父级元素,先移除原有的input标签,再重新插入一个新的input标签,最后对Picker或Select组件执行重新初始化操作,从而实现数据的动态绑定。

Picker组件初始化代码示例


<div class="weui-cell">
        <div class="weui-cell__hd"><label for="time-format" class="weui-label">性别</label></div>
        <div class="weui-cell__bd">
          <input class="weui-input " id="appl_sex" name="appl_sex" type="text" value="">
        </div>
      </div>
<div id="box">
   <input type="text" id='camera' value="前置摄像头"/>
</div>

动态绑定JavaScript实现

具体的JavaScript实现代码如下:


$("#appl_sex").picker({
  title: "请选择",
  cols: [
    {
      textAlign: 'center',
      values: ["1",'2']
    }
  ],
  onChange: function(p, v, dv) {
    console.log(p, v, dv);
  },
  onClose: function(p, v, d) {
    console.log("close");
  }
});
$('#appl_sex').change(function () {
  /*选择设备号后,根据当前设备号设置不同的摄像头选项,具体判断逻辑根据具体的项目而定*/
  var val = $("#appl_sex").val();
  if (val == "1") {
     $("#box").empty();
     $("#box").html("<input type='text' id='camera' value='前置摄像头'/>");
     $("#camera").picker({
       title: "请选择摄像头",
       cols: [
          {
            textAlign: 'center',
            values: ['前置摄像头']
          }
       ]
     });
   } else {
     $("#box").empty();
     $("#box").html("<input type='text' id='camera' value='前置摄像头'/>");
     $("#camera").picker({
       title: "请选择摄像头",
       cols: [
          {
            textAlign: 'center',
            values: ['前置摄像头', '后置摄像头', '前+后摄像头']
          }
       ]
     });
   }
});

补充说明:关于WeUI中Picker组件的详细使用教程。

调试过程中的问题排查

在调试过程中,该问题耗费了较多时间。起初发现调用example.js时功能正常,但一旦将相关逻辑移开,功能即刻失效,这种现象一度令人感到困惑。

Zepto加载顺序的关键修正

经过反复测试排查,最终确定原因是zepto.min.js的加载顺序有误。正确的做法是将该脚本文件放置在页面头部进行加载。

以下是完整的代码示例:

完整HTML结构示例


<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
  <title>WeUI</title>
  <link rel="stylesheet" href="./weui.css"/>
 <script src="./zepto.min.js"></script>
</head>
<body ontouchstart>
<div class="page">
  <div class="page__bd page__bd_spacing">
    <a href="javascript:;" class="weui-btn weui-btn_default" id="showPicker">单列选择器</a>
  </div>
</div>
<script type="text/javascript">
  $('#showPicker').on('click', function () {
    weui.picker([{
      label: '飞机票',
      value: 0
    }, {
      label: '火车票',
      value: 1
    }, {
      label: '的士票',
      value: 2
    },{
      label: '公交票 (disabled)',
      disabled: true,
      value: 3
    }, {
      label: '其他',
      value: 4
    }], {
      onChange: function (result) {
        console.log(result);
      },
      onConfirm: function (result) {
        console.log(result);
      }
    });
  });
</script>
  <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
  <script src="./weui.min.js"></script>
</body>
</html>

总结

以上内容介绍了在WeUI框架下,如何利用JavaScript动态绑定Picker数据的方法。希望上述内容能对大家有所帮助。如有任何疑问,欢迎留言,小编会及时回复。感谢大家对本站的支持! 如果觉得本文对您有帮助,欢迎转载,请注明出处,谢谢!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章