鼓楼大街最有名小吃一览表-----不吃一次在北京白活了!!

本文介绍了位于北京鼓楼地区的几家特色小吃店,包括姚记炒肝、鼓楼轩、鼓楼烤鸭店、兰亭猪手火锅和蚝味天下等,每家店铺都有其独特的风味和招牌菜品。
[img]http://img1.mpdaogou.com/2009/12/22/58578c05-9266-4fbb-bb0c-c4736bb14ff8.mpdaogou.com//UserFiles/20091222102606266_new.JPG[/img]
姚记炒肝

  北京吃炒肝儿,姚记一拐弯儿,就是说的这儿了,这儿也有很多北京小吃,要一尝鼓楼小吃这儿可是不二之选呀。

  地址: 东城区宝钞胡同鼓楼旁

[img]http://img1.mpdaogou.com/2009/12/22/1682e673-81c5-462e-affb-2570f6967be9.mpdaogou.com//UserFiles/200912221028422842_new.JPG[/img]

鼓楼轩

  主卖老北京家常菜和鼓楼小吃。

  地址: 东城区鼓楼东大街311号

[img]http://img1.mpdaogou.com/2009/12/22/b0bc0424-0bdc-47b0-8ead-1def1907a368.mpdaogou.com//UserFiles/200912221029432943_new.JPG[/img]

鼓楼烤鸭店

  钟鼓楼,什刹海,地安门这边儿总有一种老北京的范儿,所以这里开的馆子都是那么留有老北京的韵味儿,有这种情节的可以去光顾。

  地址: 东城区鼓楼东大街110号

[img]http://img1.mpdaogou.com/2009/12/22/18b0be20-f4fb-4523-9c62-d3efb52e27ff.mpdaogou.com//UserFiles/200912221031213121_new.JPG[/img]

兰亭猪手火锅

  主要吃的是创意火锅,还有鼓楼小吃等。

  地址: 东城区鼓楼东大街232号(春晨宾馆旁巷内)

[img]http://img1.mpdaogou.com/2009/12/22/0ed7af47-6891-430f-8a8b-b044bf52e25a.mpdaogou.com//UserFiles/200912221032533253_new.JPG[/img]

  蚝味天下

  主打海鲜炭烤。生蚝滑滑嫩嫩,很入味。扇贝个头虽小,但确实好,剁椒和豉汁味的要特别推荐。鸡翅也还行,其他就一般般了。老板人很热情,把小店打理得井井有条。

  地址: 东城区交道口鼓楼东大街
<think>在Element Plus的级联选择器(Cascader)中,当我们选择一个选项时,通常需要同时获取选中项的value和label。默认情况下,组件通过v-model绑定的是选中项的value数组(在单选模式下是一个数组,多选模式下是二维数组)。但是,如果我们同时需要label,可以通过监听change事件来获取。 解决方案: 1. 使用change事件:当选中节点变化时,会触发change事件,该事件会传递两个参数: - value: 选中节点的value数组(每个层级的值) - selectedData: 选中节点对应的数据对象数组(每个层级的节点数据,包含label等信息) 2. 在change事件处理函数中,我们可以从selectedData数组中提取出label信息。 示例代码: ```vue <template> <el-cascader v-model="selectedValue" :options="options" @change="handleChange" clearable /> </template> <script setup> import { ref } from 'vue'; const selectedValue = ref([]); // 绑定选中的值(value数组) const selectedLabel = ref(''); // 用于存储选中的label,如果是多选则可能需要数组,这里以单选为例 // 示例选项数据 const options = [ { value: 'zhejiang', label: '浙江省', children: [ { value: 'hangzhou', label: '杭州市' }, { value: 'ningbo', label: '宁波市' }, ], }, { value: 'jiangsu', label: '江苏省', children: [ { value: 'nanjing', label: '南京市' }, { value: 'suzhou', label: '苏州市' }, ], }, ]; // change事件处理函数 const handleChange = (value, selectedData) => { // value: 选中的值的数组,如['zhejiang', 'hangzhou'] // selectedData: 选中的节点数据对象数组,每个节点包含value、label等 // 将选中的label拼接成字符串(根据实际需求,如果是多选则需遍历selectedData) selectedLabel.value = selectedData.map(item => item.label).join('/'); console.log('选中的值:', value); console.log('选中的标签:', selectedLabel.value); }; </script> ``` 说明: - 上述代码中,我们通过`@change="handleChange"`监听变化事件。 - `handleChange`函数接收两个参数:`value`(选中的值数组)和`selectedData`(选中的节点数据数组)。 - 在`handleChange`中,我们通过遍历`selectedData`数组,取出每个节点的`label`属性,然后拼接成一个字符串(例如:浙江省/杭州市)。如果是多选模式,`selectedData`将是一个二维数组,需要根据多选的数据结构进行调整。 多选模式: 如果级联选择器设置为多选(添加`:props="{ multiple: true }"`),那么`change`事件的`selectedData`参数将是一个二维数组,每个选中项是一个数组(表示一条路径)。此时,我们需要遍历这个二维数组来获取每个选中项的标签。 多选示例: ```vue <template> <el-cascader v-model="selectedValue" :options="options" :props="{ multiple: true }" @change="handleMultiChange" clearable /> </template> <script setup> import { ref } from 'vue'; const selectedValue = ref([]); const selectedLabels = ref([]); // 存储每个选中项的标签(数组,每个元素是一个路径字符串) const options = [ ... ]; // 同上 const handleMultiChange = (value, selectedData) => { // selectedData 是一个二维数组,例如:[[{value: 'zhejiang', label: '浙江省'}, {value: 'hangzhou', label: '杭州市'}], ...] selectedLabels.value = selectedData.map(path => path.map(node => node.label).join('/')); console.log('选中的值数组:', value); console.log('选中的标签数组:', selectedLabels.value); }; </script> ``` 注意:在多选模式下,`selectedData`的每个元素是一个数组,表示一条完整的路径(从根节点到叶子节点)。我们通过遍历每条路径,将路径上的每个节点的label拼接成一个字符串,然后放入`selectedLabels`数组中。 这样,我们就可以同时获取到选中的值和标签了。 §§相关问题§§: 1. 如何在Element Plus级联选择器中实现搜索功能? 2. 级联选择器如何设置默认值(初始选中)? 3. 如何动态加载级联选择器的选项数据(懒加载)? 4. 如何自定义级联选择器节点(slot)的显示内容? </think> # Element Plus 级联选择器获取选中值(value和label) 在 Element Plus 的级联选择器(Cascader)中获取选中的值和标签(label)是常见的需求。我将展示如何实现这个功能,并提供一个完整的示例。 ## 解决方案 ```vue <template> <div class="cascader-demo"> <h2>级联选择器值获取示例</h2> <el-cascader v-model="selectedPath" :options="options" :props="propsConfig" placeholder="请选择地区" clearable @change="handleChange" /> <div class="result-card"> <h3>当前选中结果:</h3> <p v-if="selectedLabels.length === 0">请选择地区</p> <div v-else> <p><strong>选中的值(value):</strong> {{ selectedPath }}</p> <p><strong>选中的标签(label):</strong> {{ selectedLabels.join(' / ') }}</p> <p><strong>完整路径信息:</strong></p> <ul> <li v-for="(node, index) in selectedNodes" :key="index"> {{ node.label }} ({{ node.value }}) </li> </ul> </div> </div> </div> </template> <script setup> import { ref } from 'vue'; // 选中的值路径数组 const selectedPath = ref([]); // 存储选中的标签数组 const selectedLabels = ref([]); // 存储完整的节点信息 const selectedNodes = ref([]); // 级联选择器配置 const propsConfig = { expandTrigger: 'hover', value: 'value', label: 'label', children: 'children' }; // 处理选择变化 const handleChange = (value) => { if (value && value.length > 0) { // 获取选中的节点 const nodes = getSelectedNodes(value, options.value); if (nodes) { selectedLabels.value = nodes.map(node => node.label); selectedNodes.value = nodes; } else { selectedLabels.value = []; selectedNodes.value = []; } } else { // 清除选择 selectedLabels.value = []; selectedNodes.value = []; } }; // 递归查找选中的节点 const getSelectedNodes = (path, options) => { if (!path || path.length === 0 || !options) return null; const result = []; let currentLevel = options; for (const val of path) { const node = currentLevel.find(item => item.value === val); if (!node) return null; result.push({ value: node.value, label: node.label, level: result.length + 1 }); if (node.children && node.children.length > 0) { currentLevel = node.children; } else { break; } } return result; }; // 地区数据 const options = ref([ { value: 'zhejiang', label: '浙江省', children: [ { value: 'hangzhou', label: '杭州市', children: [ { value: 'xihu', label: '西湖区' }, { value: 'yuhang', label: '余杭区' } ] }, { value: 'ningbo', label: '宁波市', children: [ { value: 'haishu', label: '海曙区' }, { value: 'yinzhou', label: '鄞州区' } ] } ] }, { value: 'jiangsu', label: '江苏省', children: [ { value: 'nanjing', label: '南京市', children: [ { value: 'xuanwu', label: '玄武区' }, { value: 'gulou', label: '鼓楼区' } ] }, { value: 'suzhou', label: '苏州市', children: [ { value: 'gusu', label: '姑苏区' }, { value: 'wuzhong', label: '吴中区' } ] } ] } ]); </script> <style> .cascader-demo { max-width: 500px; margin: 20px auto; padding: 20px; border: 1px solid #ebeef5; border-radius: 8px; box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); } .result-card { margin-top: 20px; padding: 15px; background-color: #f5f7fa; border-radius: 8px; border-left: 4px solid #409eff; } h2 { color: #303133; text-align: center; } h3 { color: #606266; margin-bottom: 10px; } .el-cascader { width: 100%; } p { margin: 8px 0; } ul { padding-left: 20px; } li { margin: 5px 0; } </style> ``` ## 代码解释 ### 核心功能实现 1. **数据绑定**: - `selectedPath`:存储当前选中的值路径数组(如 `['zhejiang', 'hangzhou', 'xihu']`) - `selectedLabels`:存储选中的标签数组(如 `['浙江省', '杭州市', '西湖区']`) - `selectedNodes`:存储完整的节点信息对象 2. **change事件处理**: ```javascript const handleChange = (value) => { // 处理选择变化 if (value && value.length > 0) { const nodes = getSelectedNodes(value, options.value); // ... } else { // 清除选择 } }; ``` 3. **递归查找节点**: ```javascript const getSelectedNodes = (path, options) => { // 递归查找选中的节点 const result = []; let currentLevel = options; for (const val of path) { const node = currentLevel.find(item => item.value === val); // ... } return result; }; ``` ### 关键点说明 - **@change事件**:这是获取选中值的关键事件,它返回当前选中的值路径数组 - **递归查找**:通过值路径在选项树中查找对应的节点信息 - **完整节点信息**:获取节点对象可以访问更多属性(如自定义属性) - **多级路径处理**:代码能正确处理任意深度的级联选择 ### 样式说明 - 添加了卡片式布局提升视觉体验 - 结果区域清晰展示选中值和标签 - 使用Element Plus的默认配色方案保持一致性 ## 运行效果 当用户选择路径后,界面会显示: 1. 选中的值数组(value) 2. 选中的标签路径(label) 3. 完整的节点信息(包含value、label和层级) ## 注意事项 1. 确保选项数据中的`value`是唯一的 2. 对于大型数据,考虑性能优化(如使用Map缓存) 3. 如果需要异步加载选项,需要修改节点查找逻辑
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值