场景1—— A页面的搜索结果需要跳转到B页面去(主要省去B页面重新输入字段的重复操作)
比如A表里面有个B关联的字段,现在需要直接从A跳转到B的列表页面去,具备直接查看的效果。例如从班级表里面有个功能,需要查看该班的学生,而该班的学生全部在另外一张表里面
{
name: 'xuesheng',
text: '班级学生',
title: function (table, row) {
return "班级学生管理";
},
extend: 'data-toggle="tooltip"',
classname: 'btn btn-xs btn-info btn-addtabs',
url: function (table, row, j) {
var url = '/pays?ref=addtabs&banji_id=' + table.id;
return Fast.api.fixurl(url);
}
}
其实只要在任意链接里面拼接我们需要的参数,会自动筛选 (用处非常广泛,适合页面跳来跳去的交互逻辑),大幅度提升交互系统后台的交互能力。
场景2:用户发表动态,选择视频的时候,隐藏图片,选择图片的时候,隐藏视频。
也是非常广泛的场景,选择A会导致B被隐藏,数据表里面填写的是A相关的值,选择B会隐藏A,填写的是B的值。这种需求基本是最普遍的需求之一,包括banner点击如果是放大图片,需要放入高清图,如果是链接,会隐藏需要放入的高清图,选择放入链接。其实使用jquery判断某个值即可。根据不同的值触发显示不同的数据。
首先需要将隐藏的俩个div 模块定义俩个变量,然后绑定jquery的change事件,每次变动值,都会触发显示的不同。
<script src="/assets/libs/jquery/dist/jquery.min.js"></script>
<script>
window.onload = function () {
//根据不同的值
$('#c-vtype').change(function(){
var vtype = $("#c-vtype").val();
if(vtype == 1){
$("#hfile").hide(); // 隐藏
$("#himages").show();
}else{
$("#himages").hide(); // 隐藏
$("#hfile").show(); // 隐藏
}
})
}
</script>
场景3: 用户从一个新绑定的页面 跳到了B页面 绑定了一个参数,同时该参数对应了一个新的绑定 从课表那绑定了班级,在编辑班级页面的时候,也要一并把课表的信息传递过来
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Grade_ids')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-grade_ids" data-rule="required" data-source="grade/getGradeByBanji?banji_id={$banji_id}" data-multiple="true" class="form-control selectpage" name="row[grade_ids]" type="text" value="">
</div>
</div>
解决办法,将该页面用到了绑定参数的变量全部替换成绑定的参数新链接即可。
data-source=“grade/getGradeByBanji?banji_id={$banji_id}”
这样就限定了在当前页面数据可能存在的不一致性,直接定位data-source 替换掉对应的URL
好处是简单,但是无法实现二级联动(主要该页面绑定了一个唯一二级参数,不给二级联动),所以可以简化数据的获取
//标签的弹窗相关数据
{
name: 'xslist',
text: '学生查看',
title: function (table, row) {
return "学生查看";
},
extend: 'data-toggle="tooltip"',
classname:"btn btn-xs btn-danger btn-dialog",
url: function (table, row, j) {
var url = 'pays?ref=addtabs&banji_id=' + table.id;
return Fast.api.fixurl(url);
}
}
场景4: 拉取的时候,变更任意字段读取 可能有时候需要读取手机号 有时候需要读取nickname 有时候需要读取其他字段
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('User_id')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-user_id" data-rule="required" data-source="user/user/index" data-field="realname" class="form-control selectpage" name="row[user_id]" type="text" value="">
</div>
</div>
这样很方便切换对应的需要显示的字段信息
场景5: 当前时间的格式是 2024-08-01 12:00:53 需要将其格式变成 2024-08-01
默认情况下 date 格式可以满足要求,但是如果是中途变更 不能再次进行生成 需要手动格式化前端页面
{field: ‘endtime’, title: __(‘Endtime’), operate:‘RANGE’, addclass:‘datetimerange’, autocomplete:false,formatter: Table.api.formatter.datetime, datetimeFormat:‘YYYY-MM-DD’}, 最后的字段 可以直接定位输入的格式
如果在页面对时间格式调整 data-date-format 处可以对时间格式进行调整
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Starttime')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-starttime" class="form-control datetimepicker" data-date-format="YYYY-MM-DD" data-use-current="true" name="row[starttime]" type="text" value="{:date('Y-m-d H:i:s')}">
</div></div>
场景6: 默认与非默认 修改默认值 (切换选项按钮)
{foreach name="statusList" item="vo"}
<label for="row[status]-{$key}"><input id="row[status]-{$key}" name="row[status]" type="radio" value="{$key}" {in name="key" value="2"}checked{/in} /> {$vo}</label>
{/foreach}
修改循环的列表信息:
<div class="radio">
<label for="row[pay_status]-1"><input id="row[pay_status]-1" name="row[pay_status]" type="radio" value="1"> 待付款</label>
<label for="row[pay_status]-2"><input id="row[pay_status]-2" name="row[pay_status]" type="radio" value="2" checked=""> 已付款</label>
<label for="row[pay_status]-3"><input id="row[pay_status]-3" name="row[pay_status]" type="radio" value="3"> 已退款</label>
</div>
如果不想后台进行控制了,直接写死在前端。
如果是后端想要重新控制:
$this->view->assign("payStatusList", $this->model->getPayStatusList()); //控制前端的列表变量