java web 二

接上一篇

前端问题

前端界面主要使用vue的element的ui组件来实现的,引用以下组件就可以使用vue的框架了,详见https://cn.vuejs.org/

    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">

    <script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
    <link rel="stylesheet" href="css/bootstrap.min.css">

    <script src="js/bootstrap.js"></script>
    <!-- 先引入 Vue -->
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <!-- 引入组件库 -->
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>

1数据获取

可以使用ajax请求,来实现前后端完全分离的操作

              getdata:function(){
                    var _this = this
                    $.ajax({
                        url:"getProjectInfo.do",
                        type:"get",
                        dataType:"json",
                        success:function(resp) {
                            for(var i in resp) {
                                resp[i].isActive=false;
                                console.log(i,":",resp[i]);
                            }
                            _this.packageInfos = resp
                        },
                    });
                },
                addPackage:function () {
                    window.location.href="editPackages.do?addinName=new";
                }
            },
            created(){
                this.getdata();
            }

也可以使用jsp的内置对象获取后端添加在model中的数据

            new Vue({
                el:'#box',
                data:{
                    projectName:"${projectName}",
                    outputPath:"${outputPath}",
                    packageDetails:${packageDetails},
                    type:"",
                    pinyinName:"",
                    displayName:"",
                    nowIndex:-100
                },

在使用上还是很灵活多变,按需使用

2 table item 元素的显示和消失

vue中提供v-show的属性来操作控件的显示和消失,并且是双向绑定。只需要改改变预定义的数据,就可以实现显示和消失的效果

    <el-table :data="packageInfos" style="width: 100%">
        <el-table-column type="expand">
            <template slot-scope="props">
                <ul>
                    <li v-for="item in props.row.packages">
                        <a :href="'/download.do?addinName='+item+'&folderName='+props.row.outputFolder">{{item}}</a>
                    </li>
                </ul>
            </template>
        </el-table-column>
        <el-table-column label="项目名称 ID" prop="projectName">
        </el-table-column>
        <el-table-column fixed="right" label="操作" width="200">
            <template slot-scope="scope">
                <el-button @click="addPackage()" type="text" size="small">
                    添加
                </el-button>
                <el-button type="text" size="small" @click="handleEditClick(scope.row)">
                    编辑
                </el-button>
                <el-button @click="handlePackageClick(scope.row)" type="text" size="small">
                    打包
                </el-button>
                <el-progress  v-show="scope.row.isActive" type="line" :percentage="percentage" :status="processStatus"  :show-text="isShowTxt"></el-progress>
            </template>
        </el-table-column>
    </el-table>

打包的进度条是否显示和数据中的isActive属性绑定,只需要在“打包”按钮的点击事件中修改当前行的这个属性就完成显示和消失的操作

3页面跳转

暂时使用类似于A标签的方式实现页面跳转,看看后续有没有什么更好的方式(这样等于是把接口和方法都暴露了)

   handleEditClick:function(package){
                    window.location.href="editPackages.do?addinName="+package.projectName;
                },

 

posted @ 2018-01-23 17:06  jiataoqin  阅读(195)  评论(0编辑  收藏  举报