
vue返回上一页的时候,默认都会重新执行生命周期,重新加载数据,这样其实不太友好。那我们仿照微信小程序,返回上一页不会触发onLoad,但是会触发onShow,我们就可以在onShow里面做一些事情。
最简单的方法就是把二级菜单的样式设置为:
1:oe_secondary_submenu {display:none;}
2:在点击的时候显示二级菜单:
$("oe_secondary_submenu")data("onShow")=false; //一开始状态为隐藏
$("oe_secondary_menu_section")click(function(){
if($("oe_secondary_submenu")data("onShow")){ //切换二级菜单的同时改变状态
$("oe_secondary_submenu")hide();
$("oe_secondary_submenu")data("onShow",false);
}else{
$("oe_secondary_submenu")show();
$("oe_secondary_submenu")data("onShow",true);
}
});
我之前也有这问题就跟着查 查到了这里,最后我自己写了一个
我的解决思路就是 新建一个tmp文件,从老文件读写数据到新文件到指定位置之后插入需要岔路的数据 接着继续从老文件读写到新文件,最后将老文件删除 新文件改名为老文件
/// <summary>
/// [静态] 二进制文件中插入Byte[]数据
/// </summary>
/// <param name="path">欲插入文件地址</param>
/// <param name="index">插入位置</param>
/// <param name="data">插入数据</param>
/// <param name="memoryPoolSize">内存池大小</param>
/// <returns></returns>
public static void FileInsertion(string path, long index, List<byte> data, int memoryPoolSize = 1024 1024 3)
{
string tmpFilePath = path + "tmp"; // 临时文件地址
using(FileStreamfs=newFileStream(path,FileModeOpen))//打开原文件
{
if (FileExists(tmpFilePath)) // 文件已存在
FileDelete(tmpFilePath);
using (FileStream tmpFs = new FileStream(tmpFilePath, FileModeCreate)) // 打开临时文件
{
int len;
byte[] tmp;
for (long i = 0; i < index; i += memoryPoolSize) // 向临时文件写入插入前数据
{
len = memoryPoolSize; // 本次写出长度
if (i + memoryPoolSize >= index) // 长度超出
len = (int)(index - i); // 获取剩余长度
tmp = new byte[len]; // 存储数据临时变量
fsSeek(i, SeekOriginBegin); // 定位到指定位置
fsRead(tmp, 0, tmpLength); // 获取数据
tmpFsWrite(tmp, 0, len); // 读取指定位置的文件数据
fsSeek(len, SeekOriginBegin); // 定位到指定位置
}
for (long i = 0; i < dataLongCount(); i += memoryPoolSize) // 写入欲插入数据
{
len = memoryPoolSize;
if (i + memoryPoolSize >= dataLongCount())
len = (int)(dataLongCount() - i);
tmpFsWrite(dataTake(len)ToArray(), 0, len);
dataRemoveRange(0, len); // 删除数据
}
for (long i = 0; i < fsLength - index; i += memoryPoolSize) // 向临时文件写入插入后数据
{
len = memoryPoolSize;
if (i + memoryPoolSize >= fsLength - index)
len = (int)(fsLength - index - i);
tmp = new byte[len];
fsSeek(index + i, SeekOriginBegin);
fsRead(tmp, 0, tmpLength);
tmpFsWrite(tmp, 0, len);
fsSeek(len, SeekOriginBegin);
}
}
}
FileDelete(path); // 删除原文件
FileMove(tmpFilePath, path); // 修改临时文件名为原文件名
}
这个一般包含两种要求:
1新打开窗口的大小以及位置与关闭前一样
2新打开窗口中的控件中的数据是上次的数据
其实这都只涉及一个问题,那就是数据的保存和读取也就是说需要在窗口的onclose事件中将需要保存的参数的数据保存起来;而在窗口的onshow事件中将这些数据读取并赋给相应的参数即可
你可以在窗口关闭事件onclose中将需要保存的数据保存到注册表或数据库或ini文件中去,而在窗口onshow事件中将这些数据读取出来并分别赋予相应的变量即可
如:
关闭时保存窗口高度到x: x=formheigt; xsavetofile;
onshow中读取x并赋值给窗口高度即可 xreadfromfile; formheight=x;
这里是伪代码需要按情况扩展
以上就是关于VueCli用keep-alive实现onLoad,onShow全部的内容,包括:VueCli用keep-alive实现onLoad,onShow、请问上拉菜单用js怎么实现效果图如下:、c#如何定位字节文件中的位置并在其后面插入数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)