zoukankan      html  css  js  c++  java
  • vue.js 嵌套循环渲染

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

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

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

    市县类

    public class City implements Serializable {
        private static final long serialVersionUID = 1876407617666848861L;
        private String cityId;
        private String cityName;
        private String provincialId;
    
        public String getCityId() {
            return cityId;
        }
    
        public void setCityId(String cityId) {
            this.cityId = cityId;
        }
    
        public String getCityName() {
            return cityName;
        }
    
        public void setCityName(String cityName) {
            this.cityName = cityName;
        }
    
        public String getProvincialId() {
            return provincialId;
        }
    
        public void setProvincialId(String provincialId) {
            this.provincialId = provincialId;
        }
    
        @Override
        public String toString() {
            return "{" +
                    "cityId:" + cityId +
                    ", cityName:" + cityName +
                    ", provincialId:" + provincialId +
                    '}';
        }
    }

    省级类


    public class Provincial implements Serializable {
        private static final long serialVersionUID = 1167623414373639514L;
    
        private String provincialId;
        private String provincialName;
    
        private List<City> cityList; // 市县的集合  
    
        public String getProvincialId() {
            return provincialId;
        }
    
        public void setProvincialId(String provincialId) {
            this.provincialId = provincialId;
        }
    
        public String getProvincialName() {
            return provincialName;
        }
    
        public void setProvincialName(String provincialName) {
            this.provincialName = provincialName;
        }
    
        public List<City> getCityList() {
            return cityList;
        }
    
        public void setCityList(List<City> cityList) {
            this.cityList = cityList;
        }
    
        @Override
        public String toString() {
            return "{" +
                    "provincialId:" + provincialId +
                    ", provincialName:" + provincialName +
                    ", cityList:" + cityList +
                    '}';
        }
    }

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

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

                                                             <template></template>
    使用避免以下情况
    <table border="1" style="border-collapse:collapse">
            <tr>
                <th>城市序号</th>
                <th>城市名称</th>
                <th>所属城市代号</th>
            </tr>
               在下面的tr 标签中   无法加入v-for 来嵌套的情况
                <tr >
                    <th colspan="3">{{pro.provincialName}}</th>
                </tr>
              
                    <tr>
                        <td>{{city.cityId}}</td>
                        <td>{{city.cityName}}</td>
                        <td>{{city.provincialId}}</td>
                    </tr>
                
            </template>
        </table>

    代码如下:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <script src="${pageContext.request.contextPath}/static/jquery-1.11.3.js"></script>
        <script src="${pageContext.request.contextPath}/static/vue-2.2.6.js"></script>
        <title></title>
    </head>
    <body>
    <div id="app">
    
        <table border="1" style="border-collapse:collapse">
            <tr>
                <th>城市序号</th>
                <th>城市名称</th>
                <th>所属城市代号</th>
            </tr> 
        下面加入2个template  来执行指令 嵌套遍历
            <template v-for="pro in cities">
                <tr>
                    <th colspan="3">{{pro.provincialName}}</th>
                </tr>
                <template v-for="city in pro.cityList">
                    <tr>
                        <td>{{city.cityId}}</td>
                        <td>{{city.cityName}}</td>
                        <td>{{city.provincialId}}</td>
                    </tr>
                </template>
            </template>
        </table>
    </div>
    
    
    </body>
    <script>
        new Vue({
            el: '#app',
            data: {
                cities: ''
            },
            created: function () {
                var $this = this;
                var url = '/rycxApi/provincial/allPro';
                $.get(url, function (data) {
                    console.log(data);
                    $this.cities = data;
                })
            }
        });
    </script>
    </html>

    达到了下面的效果



  • 相关阅读:
    # 单调栈 ——Acwing 152. 城市游戏
    # 队列 ——Blah数集(OpenJ_Bailian
    # 队列 ——机器 51Nod
    # 栈 # 队列 ——HDU
    openlayers 为元素添加点击和鼠标悬停事件
    wfs请求filter中判断字段为null的写法
    ArcMap去掉Tiff栅格图层外围的黑色边框
    ArcMap给栅格数据配准并设置坐标系
    ArcMap将线按它的每个节点打散和按照线的相交点打断
    使用turf.js和openlayers配合生成等值面
  • 原文地址:https://www.cnblogs.com/felordcn/p/12142594.html
Copyright © 2011-2022 走看看