今天用了Layui的“数据表格 - 数据操作”示例代码,结果发现点击“编辑”按钮出出来一个弹出消息框,效果如下:
虽然说也可以用“弹出层”做编辑页面,但是,由于我编辑的东西很多,用“弹出层”不太理想。
我就想能不能像URL链接那样,直接点击链接就跳转走了。例如:点击一个”编辑“按钮,就直接跳转到相对应的”编辑页面“。
由于我是用的PHP做的服务端的,我看了JS代码,id 传到编辑页感觉不是很好处理,它的数据有两个关键的地方,如下:
1、初始化并获取所有的数据:var data = obj.data;
2、获取id字段的数据:data.id;
因此,我就采用另一种方法:Layui跳转页面代码(可携带复杂参数)
我用的具体代码如下:
虽然说原理上也很相似,只能说我们变相的已经把ID传到编辑页面去了。当然,如果还有其它的参数也是可以随意增加的。
<script>
layui.use('table', function(){
var table = layui.table;
//监听表格复选框选择
table.on('checkbox(demo)', function(obj){
console.log(obj)
});
//监听工具条
table.on('tool(demo)', function(obj){
var data = obj.data;
if(obj.event === 'detail'){
layer.msg('ID:'+ data.id + ' 的查看操作');
} else if(obj.event === 'del'){
layer.confirm('真的删除行么', function(index){
obj.del();
layer.close(index);
});
} else if(obj.event === 'edit'){
//layer.alert('编辑行:<br>'+ JSON.stringify(data));
layer.open({
content: '开始编辑',
success: function(layero, index){
self.location="<?php echo $HOMEURL.$ADMIN_ADDRESS;?>?type=category&action=edit&id=" + data.id;//跳到指定页面
}
});
}
});
var $ = layui.$, active = {
getCheckData: function(){ //获取选中数据
var checkStatus = table.checkStatus('idTest')
,data = checkStatus.data;
layer.alert(JSON.stringify(data));
}
,getCheckLength: function(){ //获取选中数目
var checkStatus = table.checkStatus('idTest')
,data = checkStatus.data;
layer.msg('选中了:'+ data.length + ' 个');
}
,isAll: function(){ //验证是否全选
var checkStatus = table.checkStatus('idTest');
layer.msg(checkStatus.isAll ? '全选': '未全选')
}
};
$('.demoTable .layui-btn').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
});
</script>
最终经过测试,我觉得有很多多余的JS代码,我删除了一些,最终确定用以下代码:
else if(obj.event === 'del') {
layer.confirm('确定删除数据吗?', function (index) {
obj.del();
layer.close(index);
self.location="<?php echo $HOMEURL.$ADMIN_ADDRESS;?>?type=category&action=del&token=<?php echo $get_token; ?>&id=" + data.id ;//跳到指定页面,可带复杂参数
});
}else if(obj.event === 'edit'){
self.location="<?php echo $HOMEURL.$ADMIN_ADDRESS;?>?type=category&action=edit&id=" + data.id;//跳到指定页面,可带复杂参数
}