vue.js 嵌套循环渲染

举报
码农小胖哥 发表于 2022/03/30 22:45:49 2022/03/30
【摘要】 经常用到嵌套循环渲染数据      比如  在一个html页面上渲染  全国所有的 省直辖市  及其下辖的市县      省级对市县  一般是一对多的关系 在循环遍历省级单位时  需要...

经常用到嵌套循环渲染数据     

比如  在一个html页面上渲染  全国所有的 省直辖市  及其下辖的市县     

省级对市县  一般是一对多的关系
在循环遍历省级单位时 
需要对他的子集也进行遍历  

市县类


  
  1. public class City implements Serializable {
  2. private static final long serialVersionUID = 1876407617666848861L;
  3. private String cityId;
  4. private String cityName;
  5. private String provincialId;
  6. public String getCityId() {
  7. return cityId;
  8. }
  9. public void setCityId(String cityId) {
  10. this.cityId = cityId;
  11. }
  12. public String getCityName() {
  13. return cityName;
  14. }
  15. public void setCityName(String cityName) {
  16. this.cityName = cityName;
  17. }
  18. public String getProvincialId() {
  19. return provincialId;
  20. }
  21. public void setProvincialId(String provincialId) {
  22. this.provincialId = provincialId;
  23. }
  24. @Override
  25. public String toString() {
  26. return "{" +
  27. "cityId:" + cityId +
  28. ", cityName:" + cityName +
  29. ", provincialId:" + provincialId +
  30. '}';
  31. }
  32. }

省级类



  
  1. public class Provincial implements Serializable {
  2. private static final long serialVersionUID = 1167623414373639514L;
  3. private String provincialId;
  4. private String provincialName;
  5. private List<City> cityList; // 市县的集合
  6. public String getProvincialId() {
  7. return provincialId;
  8. }
  9. public void setProvincialId(String provincialId) {
  10. this.provincialId = provincialId;
  11. }
  12. public String getProvincialName() {
  13. return provincialName;
  14. }
  15. public void setProvincialName(String provincialName) {
  16. this.provincialName = provincialName;
  17. }
  18. public List<City> getCityList() {
  19. return cityList;
  20. }
  21. public void setCityList(List<City> cityList) {
  22. this.cityList = cityList;
  23. }
  24. @Override
  25. public String toString() {
  26. return "{" +
  27. "provincialId:" + provincialId +
  28. ", provincialName:" + provincialName +
  29. ", cityList:" + cityList +
  30. '}';
  31. }
  32. }

如果是简单的列表遍历  应该不是问题   如果是 在一些模板中 或者html中  往往无法在正常情况下  使用vue的指令

经过研究vue的 api 发现可以在

                                                         <template></template>

  
  1. <table border="1" style="border-collapse:collapse">
  2. <tr>
  3. <th>城市序号</th>
  4. <th>城市名称</th>
  5. <th>所属城市代号</th>
  6. </tr>
  7. 在下面的tr 标签中 无法加入v-for 来嵌套的情况
  8. <tr >
  9. <th colspan="3">{{pro.provincialName}}</th>
  10. </tr>
  11. <tr>
  12. <td>{{city.cityId}}</td>
  13. <td>{{city.cityName}}</td>
  14. <td>{{city.provincialId}}</td>
  15. </tr>
  16. </template>
  17. </table>

代码如下:


  
  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4. <script src="${pageContext.request.contextPath}/static/jquery-1.11.3.js"></script>
  5. <script src="${pageContext.request.contextPath}/static/vue-2.2.6.js"></script>
  6. <title></title>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <table border="1" style="border-collapse:collapse">
  11. <tr>
  12. <th>城市序号</th>
  13. <th>城市名称</th>
  14. <th>所属城市代号</th>
  15. </tr>
  16. 下面加入2个template 来执行指令 嵌套遍历
  17. <template v-for="pro in cities">
  18. <tr>
  19. <th colspan="3">{{pro.provincialName}}</th>
  20. </tr>
  21. <template v-for="city in pro.cityList">
  22. <tr>
  23. <td>{{city.cityId}}</td>
  24. <td>{{city.cityName}}</td>
  25. <td>{{city.provincialId}}</td>
  26. </tr>
  27. </template>
  28. </template>
  29. </table>
  30. </div>
  31. </body>
  32. <script>
  33. new Vue({
  34. el: '#app',
  35. data: {
  36. cities: ''
  37. },
  38. created: function () {
  39. var $this = this;
  40. var url = '/rycxApi/provincial/allPro';
  41. $.get(url, function (data) {
  42. console.log(data);
  43. $this.cities = data;
  44. })
  45. }
  46. });
  47. </script>
  48. </html>



文章来源: felord.blog.csdn.net,作者:码农小胖哥,版权归原作者所有,如需转载,请联系作者。

原文链接:felord.blog.csdn.net/article/details/68953529

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。