笔试题

2019-11-07  本文已影响0人  wqjcarnation

https://zhuanlan.zhihu.com/p/21551758

一、vue组件传参的方式
1、有父子关系的
1)父给子传 子这侧用props定义参数列表,父这侧用参数名直接给参数赋值 (类似于java里的有参构造)
定义子组件时,用ref="组件名"给子组件命名,用$refs.组件名 可以获取子组件

2)子给父亲 $emit(触发父组件事件)多用于调用父组件方法

2、没有父子关系可以通过路由传参
最典型的例子,getObjByID获取信息之后想把信息传到更改页updata.vue
通过query或者params把数据传过来

query传:this.router.push({path: '/updateConType',query: response.data}) this.router.push({name: '/updateConType',query: response.data})
获取:this.$route.query.constantTypeCode
其实底层是用get ?username=&password=

params传:this.router.push({name: '/updateConType',params: response.data})route.params.userId

params相当于发post请求 url/:id/:username

二、v-if 和v-show异同

相同点:v-if和v-show 都能够实现对一个元素的隐藏和显示操作,
不同点:但是v-if是将这个元素添加或者移除到dom中,而v-show 是在这个元素上添加 style="display:none"和移除它来控制元素的显示和隐藏的

三、@component 和@Bean
https://www.jianshu.com/p/67ed3bdc215c

四、axios get/post传参

get传参两种方式##

1、this.$axios.get('http://localhost:8082/sys/constanttype/findAll', {
params: {
currentPage: this.currentPage,
pageSize: this.pageSize
}
})

例子:

findAll() {
//用axios请求后台,查询所有数据
this.$axios.get('http://localhost:8082/sys/constanttype/findAll', {
params: {
currentPage: this.currentPage,
pageSize: this.pageSize
}
})
.then(response => {
//如果响应成功,把列表数据放到tableData里
//alert(response);
this.tableData = response.data.content;
this.total = response.data.totalElements;
//this.pagerCount = response.data.totalPages;
})

            }

2、this.$axios.get('http://localhost:8082/sys/constanttype/findAll?currentPage=?&pageSize=?')

post/put/patch请求

一、传参格式为 raw (JSON格式)
request的Header:'Content-Type'= 'application/json;charset=UTF-8'
1、添加
this.$axios.post('http://localhost:8082/sys/constanttype/add',this.ruleForm,{headers: {
'Content-Type': 'application/json;charset=UTF-8'
}})

    @RequestMapping("add")
    public ResponseBean add(@RequestBody Constanttype type){
        ResponseBean result=new ResponseBean();
        Constanttype db_type=constantTypeServiceImpl.save(type);
        if(db_type!=null){
            result.setCode("0");
            result.setMsg("操作成功");
        }else{
            result.setCode("-1");
            result.setMsg("操作失败");
        }
        return result;
    }

2、批量删除时

            handleSelectionChange(val) {
                var $this = this;
                //每次要清空
                this.multipleSelection = [];
                val.forEach(item => {
                    //alert(item.id);
                    $this.multipleSelection.push(item.id);

                })
                //alert(this.multipleSelection.toString())
            }

            delBatch() {
                alert("批量删除" + this.multipleSelection.toString());
                this.$axios.get('http://localhost:8082/sys/constanttype/delBatch?ids=' + this.multipleSelection.toString())
                    .then(response => {
                        //alert(response.data.msg);
                        this.findAll();
                    })
                    .catch(error => {
                        alert(error);
                    })
            }

@RequestMapping("delBatch")
public ResponseBean delBatch(String ids){
    ResponseBean result=new ResponseBean();
    //System.out.println(ids);
    int i=  constantTypeServiceImpl.delBatch(ids);
        if(i>0){
    result.setCode("0");
        result.setMsg("操作成功");
        }else{
        result.setCode("-1");
        result.setMsg("操作失败");
        }
    
    return result;
}

3、批量添加

        gzSave() {
            //alert("规则名称"+this.ruleForm1.gzmc);
            //alert("挂号级别:"+this.ruleForm1.registLeId)
            //alert("deptId:"+this.ruleForm1.deptId)
            let selItems = this.multipleSelection; //选中的排班人员
            var $this = this;
            this.gzArrays = []; //清空用于入库的规则对象数组
            for (var i = 0; i < selItems.length; i++) {
                $this.weeks[i] = "";
                $this.weeks[i] = selItems[i].X10 + selItems[i].X11 + selItems[i].X20 + selItems[i].X21 + selItems[i].X30 +
                    selItems[i].X31 + selItems[i].X40 + selItems[i].X41 + selItems[i].X50 + selItems[i].X51 + selItems[i].X60 +
                    selItems[i].X61 + selItems[i].X70 + selItems[i].X71;
                //alert("拼装后的串:"+$this.weeks[i]);
                //alert("用户编号:"+selItems[i].id);
                $this.gzArrays.push({
                    "deptID": 1,
                    "ruleName": $this.ruleForm1.gzmc,
                    "userID": 1,
                    "week": $this.weeks[i]
                });
            }
            //挂号规则入库
            this.$axios.post('http://localhost:8082/neusys/rule/add', {
                    rules: $this.gzArrays
                }, {
                    headers: {
                        'Content-Type': 'application/json;charset=UTF-8'
                    }
                })
                .then(response => {
                    alert(response.data.msg);
                })
        }

    @RequestMapping("/add")
    public ResponseBean add(@RequestBody RulesVo vo) {
        ResponseBean result = new ResponseBean();
        int i = RuleServcieImpl.addBatch(vo);
        if(i==vo.getRules().size()){
        result.setCode("0");
        result.setMsg("添加成功");
        }else{
            result.setCode("-1");
            result.setMsg("添加失败");
        }
        return result;

    }

                
    public class RulesVo {
        private List<Rule> rules;
    
        public List<Rule> getRules() {
            return rules;
        }
    
        public void setRules(List<Rule> rules) {
            this.rules = rules;
        }
    
    }

二、传参格式为 query 形式

使用$qs.stringify(key/value)

request的Header:'Content-Type'= 'application/x-www-form-urlencoded'

    import Qs from 'qs'   //引入方式
    Vue.prototype.$qs = Qs  //全局加载
    this.$qs.stringify(data);  //使用方式
    this.$qs.parse(data);  //使用方式

    var readyData=this.$qs.stringify({
        id:1234,
        name:user
    });
    axios.post("/notice",readyData)
         .then((res) => {return res})
         .catch((err) => {return err})

生命周期

https://cn.vuejs.org/v2/guide/instance.html#%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E5%9B%BE%E7%A4%BA

(before)created
(before)mounted
(before)updated
(before)detoryed

上一篇下一篇

猜你喜欢

热点阅读