uni-app之数据驱动的picker选择器( uni-data-picker)之可以选择到任意级别
<h1>背景说明</h1><p style="margin-left: 30px">uni-app 官方的插件市场有数据驱动选择器,可以用作多级分类的场景。本人引入插件后,发现,在h5和微信小程序都只能选择到叶子级。而在给出的官方组件示例中确并非如此。</p>
<p> <img src="https://img2020.cnblogs.com/blog/1602649/202108/1602649-20210803134652230-71620805.png"></p>
<p style="margin-left: 30px"> 可以选择年级,而不选择班级。然后,想试试官方的手机版,发现并没有示例(截至日期2021年8月3日)为止。</p>
<p style="margin-left: 30px">当然,这里操作起选择器的时候,或多或少,有些繁琐。因为下方的选择框关闭一次。</p>
<p style="margin-left: 30px">然后,我把官网的示例项目下载下来。运行一下,发现做不到只选择年级,不选择班级(似乎,只能到叶子节点了)。</p>
<p style="margin-left: 30px">两边的东西居然有区别。不知道官网以后会不会改进方案。</p>
<table border="0">
<tbody>
<tr style="background-color: rgba(204, 204, 204, 1)">
<td> </td>
<td><strong>网页的组件示例</strong></td>
<td><strong>下载的组件示例</strong></td>
</tr>
<tr>
<td>点击一次后</td>
<td>选择当前组件,并关闭用于选择的弹出框</td>
<td>如果包含子级,则切换到子级选择页面;如果不包含子级选择,则关闭</td>
</tr>
</tbody>
</table>
<p style="margin-left: 30px">不过,本人的需求中,有可能选择的不是叶子。比如,选择部门的时候。所以,怎样才能任意层级的数据都是可选的呢?</p>
<h1>问题和提出解决方案</h1>
<p style="margin-left: 30px">查看说明,发现了uni-data-picker包含以下事件。</p>
<table border="0">
<tbody>
<tr style="background-color: rgba(204, 204, 204, 1)">
<td><strong>事件名称</strong></td>
<td><strong>类型</strong></td>
<td><strong>说明</strong></td>
</tr>
<tr>
<td>@change</td>
<td>EventHandle</td>
<td>选择完成时触发 {detail: {value}}</td>
</tr>
<tr>
<td>@nodeclick</td>
<td>EventHandle</td>
<td>节点被点击时触发</td>
</tr>
<tr>
<td>@popupclosed</td>
<td>EventHandle</td>
<td>弹出层被关闭时触发</td>
</tr>
</tbody>
</table>
<p style="margin-left: 30px"> 思前想后,有了两种解决方案。</p>
<p style="margin-left: 30px"><strong>方案一</strong>:当点击某一项(触发<span style="color: rgba(255, 0, 0, 1); background-color: rgba(192, 192, 192, 1)">@nodeclick</span>)时,则选中某一项。</p>
<p style="margin-left: 30px"><strong>方案二</strong>:当点击某一项(触发<span style="color: rgba(255, 0, 0, 1)"><span style="background-color: rgba(192, 192, 192, 1)">@nodeclick</span><span style="color: rgba(0, 0, 0, 1)">)时</span></span>,暂存当前选中的项值;当关闭弹出层(<span style="color: rgba(255, 0, 0, 1); background-color: rgba(192, 192, 192, 1)">@popupclosed</span>)时,则选中某一项。</p>
<p style="margin-left: 30px">考虑如果涉及级联,则方案二,数据更少的变动,则可能更少的影响级联。</p>
<h1>代码示例</h1>
<p style="margin-left: 30px">方案一的.vue文件代码如下:</p>
<div class="cnblogs_code"><img id="code_img_closed_0b23f54e-b87a-44af-bdc9-11cdb4630d0d" class="code_img_closed lazyload" data-src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_0b23f54e-b87a-44af-bdc9-11cdb4630d0d" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_0b23f54e-b87a-44af-bdc9-11cdb4630d0d" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <template>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> <view class="container">
<span style="color: rgba(0, 128, 128, 1)"> 3</span> <view class="title">
<span style="color: rgba(0, 128, 128, 1)"> 4</span> <text>uni-data-picker 本地数据</text>
<span style="color: rgba(0, 128, 128, 1)"> 5</span> </view>
<span style="color: rgba(0, 128, 128, 1)"> 6</span> <uni-data-picker placeholder="请选择班级" popup-title="请选择所在地区" :localdata="dataTree" v-model="classes"
<span style="color: rgba(0, 128, 128, 1)"> 7</span> @nodeclick="onnodeclick">
<span style="color: rgba(0, 128, 128, 1)"> 8</span> </uni-data-picker>
<span style="color: rgba(0, 128, 128, 1)"> 9</span>
<span style="color: rgba(0, 128, 128, 1)">10</span> </view>
<span style="color: rgba(0, 128, 128, 1)">11</span> </template>
<span style="color: rgba(0, 128, 128, 1)">12</span>
<span style="color: rgba(0, 128, 128, 1)">13</span> <script>
<span style="color: rgba(0, 128, 128, 1)">14</span> export <span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)"> data() {
</span><span style="color: rgba(0, 128, 128, 1)">16</span> <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">17</span> classes: '1-2'<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">18</span> <span style="color: rgba(0, 0, 0, 1)"> dataTree: [{
</span><span style="color: rgba(0, 128, 128, 1)">19</span> text: "一年级"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">20</span> value: "1-0"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">21</span> <span style="color: rgba(0, 0, 0, 1)"> children: [{
</span><span style="color: rgba(0, 128, 128, 1)">22</span> text: "1.1班"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">23</span> value: "1-1"
<span style="color: rgba(0, 128, 128, 1)">24</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">25</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">26</span> text: "1.2班"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">27</span> value: "1-2"
<span style="color: rgba(0, 128, 128, 1)">28</span> <span style="color: rgba(0, 0, 0, 1)"> }]
</span><span style="color: rgba(0, 128, 128, 1)">29</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">30</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">31</span> text: "二年级"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">32</span> value: "2-0"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">33</span> <span style="color: rgba(0, 0, 0, 1)"> children: [{
</span><span style="color: rgba(0, 128, 128, 1)">34</span> text: "2.1班"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">35</span> value: "2-1"
<span style="color: rgba(0, 128, 128, 1)">36</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">37</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">38</span> text: "2.2班"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">39</span> value: "2-2"
<span style="color: rgba(0, 128, 128, 1)">40</span> <span style="color: rgba(0, 0, 0, 1)"> }]
</span><span style="color: rgba(0, 128, 128, 1)">41</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">42</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">43</span> text: "三年级"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">44</span> value: "3-0"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">45</span> disable: <span style="color: rgba(0, 0, 255, 1)">true</span>
<span style="color: rgba(0, 128, 128, 1)">46</span> <span style="color: rgba(0, 0, 0, 1)"> }]
</span><span style="color: rgba(0, 128, 128, 1)">47</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">48</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">49</span> <span style="color: rgba(0, 0, 0, 1)"> methods: {
</span><span style="color: rgba(0, 128, 128, 1)">50</span> <span style="color: rgba(0, 0, 0, 1)"> onnodeclick(e) {
</span><span style="color: rgba(0, 128, 128, 1)">51</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.classes =<span style="color: rgba(0, 0, 0, 1)"> e.value;
</span><span style="color: rgba(0, 128, 128, 1)">52</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">53</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">54</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">55</span> </script>
<span style="color: rgba(0, 128, 128, 1)">56</span>
<span style="color: rgba(0, 128, 128, 1)">57</span> <style>
<span style="color: rgba(0, 128, 128, 1)">58</span> <span style="color: rgba(0, 0, 0, 1)"> .container {
</span><span style="color: rgba(0, 128, 128, 1)">59</span> height: 100%<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">60</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> #ifndef APP-NVUE </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">61</span> <span style="color: rgba(0, 0, 0, 1)"> display: flex;
</span><span style="color: rgba(0, 128, 128, 1)">62</span> max-<span style="color: rgba(0, 0, 0, 1)">width: 500px;
</span><span style="color: rgba(0, 128, 128, 1)">63</span> padding: 0<span style="color: rgba(0, 0, 0, 1)"> 15px;
</span><span style="color: rgba(0, 128, 128, 1)">64</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> #endif </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">65</span> flex-<span style="color: rgba(0, 0, 0, 1)">direction: column;
</span><span style="color: rgba(0, 128, 128, 1)">66</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">67</span>
<span style="color: rgba(0, 128, 128, 1)">68</span> <span style="color: rgba(0, 0, 0, 1)"> .title {
</span><span style="color: rgba(0, 128, 128, 1)">69</span> font-<span style="color: rgba(0, 0, 0, 1)">size: 14px;
</span><span style="color: rgba(0, 128, 128, 1)">70</span> font-<span style="color: rgba(0, 0, 0, 1)">weight: bold;
</span><span style="color: rgba(0, 128, 128, 1)">71</span> margin: 20px 0 5px 0<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">72</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">73</span>
<span style="color: rgba(0, 128, 128, 1)">74</span> .data-<span style="color: rgba(0, 0, 0, 1)">pickerview {
</span><span style="color: rgba(0, 128, 128, 1)">75</span> <span style="color: rgba(0, 0, 0, 1)"> height: 400px;
</span><span style="color: rgba(0, 128, 128, 1)">76</span> <span style="color: rgba(0, 0, 0, 1)"> border: 1px #e5e5e5 solid;
</span><span style="color: rgba(0, 128, 128, 1)">77</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">78</span> </style></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p style="margin-left: 30px">方案二的.vue文件代码如下:</p>
<div class="cnblogs_code"><img id="code_img_closed_28d49c9c-3138-475f-a91c-e7cf705ba729" class="code_img_closed lazyload" data-src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_28d49c9c-3138-475f-a91c-e7cf705ba729" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_28d49c9c-3138-475f-a91c-e7cf705ba729" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <template>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> <view class="container">
<span style="color: rgba(0, 128, 128, 1)"> 3</span> <view class="title">
<span style="color: rgba(0, 128, 128, 1)"> 4</span> <text>uni-data-picker 本地数据</text>
<span style="color: rgba(0, 128, 128, 1)"> 5</span> </view>
<span style="color: rgba(0, 128, 128, 1)"> 6</span> <uni-data-picker placeholder="请选择班级" popup-title="请选择所在地区" :localdata="dataTree" v-model="classes"
<span style="color: rgba(0, 128, 128, 1)"> 7</span> @nodeclick="onnodeclick"@popupclosed="onpopupclosed">
<span style="color: rgba(0, 128, 128, 1)"> 8</span> </uni-data-picker>
<span style="color: rgba(0, 128, 128, 1)"> 9</span>
<span style="color: rgba(0, 128, 128, 1)">10</span> </view>
<span style="color: rgba(0, 128, 128, 1)">11</span> </template>
<span style="color: rgba(0, 128, 128, 1)">12</span>
<span style="color: rgba(0, 128, 128, 1)">13</span> <script>
<span style="color: rgba(0, 128, 128, 1)">14</span> export <span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)"> data() {
</span><span style="color: rgba(0, 128, 128, 1)">16</span> <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">17</span> tempClasses : '', <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 临时存放vue值</span>
<span style="color: rgba(0, 128, 128, 1)">18</span> classes: '1-2'<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 0, 1)"> dataTree: [{
</span><span style="color: rgba(0, 128, 128, 1)">20</span> text: "一年级"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">21</span> value: "1-0"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">22</span> <span style="color: rgba(0, 0, 0, 1)"> children: [{
</span><span style="color: rgba(0, 128, 128, 1)">23</span> text: "1.1班"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">24</span> value: "1-1"
<span style="color: rgba(0, 128, 128, 1)">25</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">26</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">27</span> text: "1.2班"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">28</span> value: "1-2"
<span style="color: rgba(0, 128, 128, 1)">29</span> <span style="color: rgba(0, 0, 0, 1)"> }]
</span><span style="color: rgba(0, 128, 128, 1)">30</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">31</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">32</span> text: "二年级"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">33</span> value: "2-0"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">34</span> <span style="color: rgba(0, 0, 0, 1)"> children: [{
</span><span style="color: rgba(0, 128, 128, 1)">35</span> text: "2.1班"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">36</span> value: "2-1"
<span style="color: rgba(0, 128, 128, 1)">37</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">38</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">39</span> text: "2.2班"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">40</span> value: "2-2"
<span style="color: rgba(0, 128, 128, 1)">41</span> <span style="color: rgba(0, 0, 0, 1)"> }]
</span><span style="color: rgba(0, 128, 128, 1)">42</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">43</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">44</span> text: "三年级"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">45</span> value: "3-0"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">46</span> disable: <span style="color: rgba(0, 0, 255, 1)">true</span>
<span style="color: rgba(0, 128, 128, 1)">47</span> <span style="color: rgba(0, 0, 0, 1)"> }]
</span><span style="color: rgba(0, 128, 128, 1)">48</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">49</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">50</span> <span style="color: rgba(0, 0, 0, 1)"> methods: {
</span><span style="color: rgba(0, 128, 128, 1)">51</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">* 点击选项时执行方法
</span><span style="color: rgba(0, 128, 128, 1)">52</span> <span style="color: rgba(0, 128, 0, 1)"> * @param {Object} e
</span><span style="color: rgba(0, 128, 128, 1)">53</span> <span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">54</span> <span style="color: rgba(0, 0, 0, 1)"> onnodeclick(e) {
</span><span style="color: rgba(0, 128, 128, 1)">55</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.tempClasses =<span style="color: rgba(0, 0, 0, 1)"> e.value;
</span><span style="color: rgba(0, 128, 128, 1)">56</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">57</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">* 关闭弹出框执行方法
</span><span style="color: rgba(0, 128, 128, 1)">58</span> <span style="color: rgba(0, 128, 0, 1)"> * @param {Object} e
</span><span style="color: rgba(0, 128, 128, 1)">59</span> <span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">60</span> <span style="color: rgba(0, 0, 0, 1)"> onpopupclosed(e) {
</span><span style="color: rgba(0, 128, 128, 1)">61</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.classes = <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.tempClasses;
</span><span style="color: rgba(0, 128, 128, 1)">62</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">63</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">64</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">65</span> </script>
<span style="color: rgba(0, 128, 128, 1)">66</span>
<span style="color: rgba(0, 128, 128, 1)">67</span> <style>
<span style="color: rgba(0, 128, 128, 1)">68</span> <span style="color: rgba(0, 0, 0, 1)"> .container {
</span><span style="color: rgba(0, 128, 128, 1)">69</span> height: 100%<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">70</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> #ifndef APP-NVUE </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">71</span> <span style="color: rgba(0, 0, 0, 1)"> display: flex;
</span><span style="color: rgba(0, 128, 128, 1)">72</span> max-<span style="color: rgba(0, 0, 0, 1)">width: 500px;
</span><span style="color: rgba(0, 128, 128, 1)">73</span> padding: 0<span style="color: rgba(0, 0, 0, 1)"> 15px;
</span><span style="color: rgba(0, 128, 128, 1)">74</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> #endif </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">75</span> flex-<span style="color: rgba(0, 0, 0, 1)">direction: column;
</span><span style="color: rgba(0, 128, 128, 1)">76</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">77</span>
<span style="color: rgba(0, 128, 128, 1)">78</span> <span style="color: rgba(0, 0, 0, 1)"> .title {
</span><span style="color: rgba(0, 128, 128, 1)">79</span> font-<span style="color: rgba(0, 0, 0, 1)">size: 14px;
</span><span style="color: rgba(0, 128, 128, 1)">80</span> font-<span style="color: rgba(0, 0, 0, 1)">weight: bold;
</span><span style="color: rgba(0, 128, 128, 1)">81</span> margin: 20px 0 5px 0<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">82</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">83</span>
<span style="color: rgba(0, 128, 128, 1)">84</span> .data-<span style="color: rgba(0, 0, 0, 1)">pickerview {
</span><span style="color: rgba(0, 128, 128, 1)">85</span> <span style="color: rgba(0, 0, 0, 1)"> height: 400px;
</span><span style="color: rgba(0, 128, 128, 1)">86</span> <span style="color: rgba(0, 0, 0, 1)"> border: 1px #e5e5e5 solid;
</span><span style="color: rgba(0, 128, 128, 1)">87</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">88</span> </style></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<h1>扩展——获取数据驱动选择器当前的选中值</h1>
<p style="margin-left: 30px">数据驱动选择器中,选择完成时(@change)可以获取到当前选中的数组。但是,@nodeclick方法或其他状态下是否可用获取当前选中的数组?可以。我们只要标记对应的数据驱动选择器,即可在代码中找到对象及其选中的数组。</p>
<p style="margin-left: 30px">1.标记uni-data-picker对象。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">uni-data-picker </span><span style="color: rgba(255, 0, 0, 1)">ref</span><span style="color: rgba(0, 0, 255, 1)">="class"</span><span style="color: rgba(255, 0, 0, 1)"> placeholder</span><span style="color: rgba(0, 0, 255, 1)">="请选择班级"</span><span style="color: rgba(255, 0, 0, 1)"> popup-title</span><span style="color: rgba(0, 0, 255, 1)">="请选择所在地区"</span><span style="color: rgba(255, 0, 0, 1)"> :localdata</span><span style="color: rgba(0, 0, 255, 1)">="dataTree"</span><span style="color: rgba(255, 0, 0, 1)"> v-model</span><span style="color: rgba(0, 0, 255, 1)">="classes"</span><span style="color: rgba(255, 0, 0, 1)">
@nodeclick</span><span style="color: rgba(0, 0, 255, 1)">="onnodeclick"</span> <span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p style="margin-left: 30px">2.获取当前对象的选中值。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)">onnodeclick(e) {
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.classes =<span style="color: rgba(0, 0, 0, 1)"> e.value;
</span><span style="color: rgba(0, 128, 128, 1)">3</span> let selected = <span style="color: rgba(0, 0, 255, 1)">this</span>.$refs["class"<span style="color: rgba(0, 0, 0, 1)">].selected;
</span><span style="color: rgba(0, 128, 128, 1)">4</span> console.log("当前选中的值=>"<span style="color: rgba(0, 0, 0, 1)"> , selected);
</span><span style="color: rgba(0, 128, 128, 1)">5</span> },</pre>
</div>
<h1>参考网址</h1>
<ul>
<li>uni-data-picker 数据驱动的picker选择器:https://www.cnblogs.com/luyj00436/p/15091506.html</li>
</ul>
</div>
<div id="MySignature" role="contentinfo">
有志者,事竟成,破釜沉舟,百二秦关终属楚; 苦心人,天不负,卧薪尝胆,三千越甲可吞吴。<br><br>
来源:https://www.cnblogs.com/luyj00436/p/15079273.html
頁:
[1]