- 第一步:首先需要实现年级下拉框查询:
在controller中:此处的方法使用的iservice中的方法
@RequestMapping("/findAll")
@RequiresPermissions("platform:grade:findAll")
public R findAll(){
Map<String,Object> map = new HashMap<>();
List<PfGrade> list = pfGradeService.selectByMap(map);
return R.ok().put("list", list);
}
html和js中:
html中:此处在select标签中加入了@change事件,目的是当选择好了年级之后可以自动触发查询班级的方法。
<div class="form-group">
<div class="col-sm-2 control-label">年级</div>
<div class="col-sm-10">
<select v-model="student.sgrade" @change="getClassData" id="selectGid">
<option value="0">--请选择年级--</option>
<option v-for="gra in grade" :value="gra.gid">{{gra.gname}}</option>
</select>
</div>
</div>
js中:可以看到,当执行add方法时自动触发getGradeData
add: function(){
vm.showList = false;
vm.title = "新增";
this.getGradeData();
},
getGradeData:function(){
$.post(baseURL + "platform/pfGrade/findAll",{},function (result) {
vm.grade=result.list;
})
},
目前已经实现了年级的下拉框查询,接下来就是相应的在下一个下拉框中选择显示相应的班级:
2.第二步:实现班级下拉框:
先来看一下我的数据库:
年级表:
班级表:
都有对应的键。
①因iservice中没有对应的条件查询方法,遂只能自己定义:
dao中:
List<PfClass> findByGid(int gid);
service和impl省略;
xml中:
<select id="findByGid" resultType="cn.jeefast.modules.platform.entity.PfClass">
select * from pf_class where gid = #{gid}
</select>
controller中:
@RequestMapping("/findByGid")
@RequiresPermissions("platform:class:findAll")
public R findByGid(@RequestBody int gid){
List<PfClass> list = pfClassService.findByGid(gid);
return R.ok().put("list", list);
}
前台HTML和JS:
html中:
<div class="form-group">
<div class="col-sm-2 control-label">班级</div>
<div class="col-sm-10">
<select v-model="student.sclass">
<option value="0">--请选择班级--</option>
<option v-for="cla in classes" :value="cla.cid">{{cla.cname}}</option>
</select>
</div>
</div>
js中:因上方加入了@change方法可以点击时自动调用查询班级的,所以接下来只需要直接在js中定义此方法即可。下方js代码没有简写,因为需要给此次请求设置contenttype属性,目的是后台方法形参中使用了@RequestBody注解。具体报错如此网站:https://blog.csdn.net/feiyst/article/details/88431621
getClassData:function(){
var gid=$("#selectGid").val(); //获取选中的项
$.ajax({
type: "POST",
url: baseURL+"platform/pfClass/findByGid",
contentType: "application/json",
data: gid,
success: function(r){
if(r.code == 0){
vm.classes=r.list;
}else{
alert(r.msg);
}
}
})
},