js 搜索记录

背景:

移动端的搜索记录,不可能通过调取接口来记录瑟,所以通过在某某.js一个文件定义和处理逻辑。

代码:

//某某.js
var yumingSearch = {
    init: function () {
        initF7.GloblalF7.onPageInit("yumingSearch", function (data) {
            yumingSearch.bindDomEvent();

        });
        /**
         * 我的页面返回按钮时执行
         */
        initF7.GloblalF7.onPageAfterBack("yumingSearch", function (page) {
            MAPutils.GlobalMap.updateSize();
            layui.layer.closeAll();

        });
    },
    bindDomEvent: function () {
        let searchValue = GlobalUtils.debounce(yumingSearch.searchValue, 400)
        $(".yuming-search-input").on("input propertychange", function (e) {
            searchValue($(this).val())
        })
        $(".yuming-search-quxiao").on("click", function () {
            $(".yuming-search-list").empty()
            $(".yuming-search-input").val("")
        })
        if (Config.isMobile) {
            this.setSearchSql(this.getSql)
        }
        $(".sousuo-shanchu").on("clcik", function () {
            yumingSearch.setSearchSql(yumingSearch.delSql)
        })
    },
    listPageV2: null,
    searchValue: function (val) {
        if (!val) {
            return
        }
        if (yumingSearch.listPageV2) {
            yumingSearch.listPageV2.abort();
        }
        yumingSearch.listPageV2 = $.ajax({
            url: Config.API_SERVER_URL + "/enav/appTemplabel/listPageV2",
            type: "POST",
            data: {
                param: JSON.stringify({
                    page: 1,
                    limit: 50,
                    names: val,
                    dataType: 1,
                    username: Config.userInfo.name
                })
            }
        }).always(function (res) {
            if (res.data && res.data.length > 0) {
                let content = ""
                $.each(res.data, function (i, item) {
                    content += `<div class="yuming-search-item" data-obj='${JSON.stringify(item)}'>${item.names}</div>`
                })
                $(".yuming-search-list").html(content);
                $(".yuming-search-item").on("click", function () {
                    let obj = $(this).attr("data-obj");
                    if (obj) {
                        MapInit.backMap();
                        let o = JSON.parse(obj)
                        MAPutils.createYmQuyu(o)
                        yumingSearch.setSearchSql(yumingSearch.saveSql, obj)
                    }
                })
            } else {
                // layui.layer.msg("暂无相关数据")
                $(".yuming-search-list").html('<div class="yuming-search-item">暂无相关数据</div>')
            }
        })
    },
    setSearchSql: function (callback, obj) {
        var db = window.sqlitePlugin.openDatabase({
            name: Config.databasename,
            location: 'default',
        })
        db.transaction(
            function (tx) {
                tx.executeSql(
                    "CREATE TABLE IF NOT EXISTS ymSearch (guid text,jsonobj text,createdTime TimeStamp DEFAULT (datetime('now','localtime')))"
                )
                callback(tx, obj)
            }
        )
    },
    saveSql: function (tx, obj) {
        tx.executeSql("SELECT * FROM ymSearch WHERE guid = ?", [obj.guid], function (tx, res) {
            if (res.rows.length > 0) {
                tx.executeSql("UPDATE ymSearch set jsonobj = ? WHERE guid = ?", [JSON.stringify(obj), obj.guid], function (tx, res) {
                    //                                layui.layer.msg('修改成功!');
                }, function (e) {
                    //                                layui.layer.msg('修改失败,插入数据!');
                })
            } else {

                tx.executeSql("INSERT INTO ymSearch (guid,jsonobj) VALUES (?,?)", [obj.guid, JSON.stringify(obj)], function (tx, res) {
                    //                                                       layui.layer.msg('插入成功!');
                    console.log('插入成功!');
                }, function (e) {
                    console.log("插入失败了呀");
                })
            }
        })
    },
    delSql: function (tx) {
        tx.executeSql("DELETE FROM ymSearch", [], function (tx, res) {
            if (res.rowsAffected > 0) {
                // layui.layer.msg('清除成功!')
                $('.yuming-jilu-box').empty()
            }
        }, function (e) {
            layui.layer.msg('清除失败!')
        })
    },
    getSql: function (tx) {
        tx.executeSql("SELECT * FROM ymSearch DESC LIMIT 10", [], function (tx, res) {
            if (res.rows.length > 0) {
                let content = "";
                for (var i = 0; i < res.rows.length; i++) {
                    let obj = JSON.parse(JSON.parse(res.rows.item(i).jsonobj));
                    content += `<div class="yuming-jilu-item" data-obj='${JSON.stringify(obj)}'>${obj.names}</div>`
                }
                $('.yuming-jilu-box').html(content);
                $(".yuming-jilu-item").on("click", function () {
                    let obj = $(this).attr("data-obj");
                    if (obj) {
                        MapInit.backMap();
                        let o = JSON.parse(obj)
                        MAPutils.createYmQuyu(o)
                    }
                })
            }
        })
    }
}
yumingSearch.init();

核心方法:

外部通过调用这个方法,并传callback()

 

实际代码:

外部使用,如下:

var mainSearchLog = {
    init: function () {
        initF7.GloblalF7.onPageInit("mainSearchLog", function (data) {
            mainSearchLog.bindDomEvent();
        });
        /**
         * 返回按钮时执行
         */
        initF7.GloblalF7.onPageAfterBack("mainSearchLog", function (page) {
            MAPutils.GlobalMap.updateSize();
        });
    },
    bindDomEvent: function () {
        if (Config.isMobile) {
            yumingSearch.setSearchSql(mainSearchLog.getYumingSearchSql)
        }
    },
    /**
     * 判断手机端
     * 查询yumingSearch sql表
     */
    getYumingSearchSql: function (tx) {
        tx.executeSql("SELECT * FROM ymSearch DESC LIMIT 50", [], function (tx, res) {
            if (res.rows.length > 0) {
                let content = "";
                for (var i = 0; i < res.rows.length; i++) {
                    let obj = JSON.parse(JSON.parse(res.rows.item(i).jsonobj));
                    content += `<div class="search-log-box" data-obj='${JSON.stringify(obj)}'>${obj.names}</div>`
                }
                $('.yuming .searchLogBox').html(content);
                $(".search-log-box").on("click", function () {
                    let obj = $(this).attr("data-obj");
                    if (obj) {
                        MapInit.backMap();
                        let o = JSON.parse(obj)
                        MAPutils.createYmQuyu(o)
                    }
                })
            }
        })
    },
}
mainSearchLog.init()

核心调用:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/209384.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

go开发之个微机器人的二次开发

简要描述&#xff1a; 下载消息中的语音 请求URL&#xff1a; http://域名地址/getMsgVoice 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必选类型…

Tkinter 面向对象框架《二》

一、说明 Tkinter 教程 开发完整的 Tkinter 面向对象应用程序开发完整的 Tkinter 面向对象应用程序。 即使OOP的高手&#xff0c;也未必对面向对象全部掌握。至于 Tkinter的OOP编程&#xff0c;其实高手们也是在摸索实践中。 为了面向对象和Tkinter参与本教程。如果你来这里纯…

三、Zookeeper数据模型

目录 1、Znode兼具文件和目录两种特点 2、Znode具有原子性操作 3、Znode存储数据大小有限制 4、Znode通过路径引用 如下图中的每个节点称为一个Znode&#xff0c; 每个Znode由3部分组成: ZooKeeper的数据模型&#xff0c;在结构上和标准文件系统的非常相似&#xff0c;拥有…

力扣15题 三数之和 双指针算法

15. 三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三…

013 OpenCV copyMakeBorder(padding)

目录 一、环境 二、原理 三、完整代码 一、环境 本文使用环境为&#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、原理 cv.copyMakeBorder是OpenCV库中的一个函数&#xff0c;用于在图像周围添加边框&#xff08;padding&#xff09;。这个函数可以用于图…

Mongodb 开启oplog,java监听oplog并写入关系型数据库

开启Oplog windows mongodb bin目录下找到配置文件/bin/mongod.cfg,配置如下&#xff1a; replication:replSetName: localoplogSizeMB: 1024双击mongo.exe 执行 rs.initiate({_id: "local", members: [{_id: 0, host: "localhost:27017"}]})若出现如…

人工智能|机器学习——感知器算法原理与python实现

感知器算法是一种可以直接得到线性判别函数的线性分类方法&#xff0c;它是基于样本线性可分的要求下使用的。 一、线性可分与线性不可分 为了方便讨论&#xff0c;我们蒋样本增加了以为常数&#xff0c;得到增广样向量 y&#xff08;1;;;...;&#xff09;,则n个样本的集合为&a…

[论文精读]利用大语言模型对扩散模型进行自我修正

本博客是一篇最新论文的精读&#xff0c;论文为UC伯克利大学相关研究者新近(2023.11.27)在arxiv上上传的《Self-correcting LLM-controlled Diffusion Models》 。 内容提要: 现有的基于扩散的文本到图像生成模型在生成与复杂提示精确对齐的图像时仍然存在困难,尤其是需要数值和…

ansible模块

目录 一、ansible的command模块 1.ad-hoc 2.playbook 3.command模块 二、ansible的shell模块 1.shell模块帮助 2.shell模块支持的参数和解释 3.简单试验 4.批量远程执行脚本 三、script模块 1.script模块帮助 2.shell模块支持的参数和解释 3.实践 四、ansible文件…

【pytorch】从yolo的make_grid理解torch.meshgrid、torch.stack

文章目录 简述1、torch.meshgrid 创建行列坐标2、torch.stack 结合行列坐标3、通过view函数扩展维度 简述 yolo检测 make_grid创建网格代码如下&#xff0c;那么什么是torch.meshgrid? def _make_grid(nx20, ny20):yv, xv torch.meshgrid([torch.arange(ny), torch.arange(…

C++基础 -28- 友元

友元用于访问类中的所有数据成员 类中的私有成员&#xff0c;类外不可访问 定义友元的格式&#xff08;友元函数必须要在类内&#xff0c;声明&#xff09; friend void show(person &b); 使用友元访问类的所有成员 #include "iostream"using namespace std…

深入Spring Security魔幻山谷-获取认证机制核心原理讲解(新版)

文/朱季谦 这是一个古老的传说。 在神秘的Web系统世界里&#xff0c;有一座名为Spring Security的山谷&#xff0c;它高耸入云&#xff0c;蔓延千里&#xff0c;鸟飞不过&#xff0c;兽攀不了。这座山谷只有一条逼仄的道路可通。然而&#xff0c;若要通过这条道路前往另一头的…

html实现各种好看的鼠标滑过图片特效模板

文章目录 1.鼠标悬浮效果1.1 渐动效果1.2 渐变效果1.3 边框效果1.4 线行效果1.5 图标效果1.6 块状效果1.7 边线效果1.8 放大效果1.9 渐出效果1.10 痕迹效果1.11 交叉效果1.12 着重效果1.13 详展效果1.14 能动效果1.15 明细效果 2.主要源码2.1 源代码 源码下载 作者&#xff1a;…

基于python的FMCW雷达工作原理仿真

这篇文章将介绍如何使用python来实现FMCW工作原理的仿真&#xff0c;第1章内容将介绍距离检测原理&#xff0c;第2章内容会介绍速度检测原理。 第1章 第1部分: 距离检测原理 调制的连续波雷达通常也被叫做调频连续波&#xff08;FMCW&#xff09;雷达是一个使用频率调制来测量…

鸿蒙(HarmonyOS)应用开发——容器组件(Grid组件)

前言 前面一篇文章中&#xff0c;已经说了List组件。那么接下来就是容器组件中的Grid组件 #mermaid-svg-oz1b7w45ASmMlZFa {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-oz1b7w45ASmMlZFa .error-icon{fill:#5522…

Docker-compose的在线与离线安装方式及问题解决

文章目录 一、在线方式1、GitHub2、daocloud.io 二、离线方式&#xff08;推荐&#xff09;三、验证 一、在线方式 1、GitHub curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/d…

springboot缓存技术-Ehcache-Redis-memcached

springboot缓存技术-Ehcache-Redis-memcached 文章目录 springboot缓存技术-Ehcache-Redis-memcachedspring缓存使用方式手机验证码案例缓存供应商变更Ehcache变更缓存供应商Redis缓存供应商变更memcached下载安装memcachedSpringBoot整合memcached spring缓存使用方式 导缓存…

linux后端基础---笔记整理(tmux、vim、shell、ssh/scp、git、thrift、docker)

目录 1.Linux常用文件管理命令 2.tmux终端复用器/vim命令式文本编辑器 3.Shell语法 3.1 Shell—版本3.2 新建一个test.sh文件3.3 Shell文件—运行方式3.4 Shell—注释3.5 Shell—变量3.6 Shell—默认变量&#xff0c;文件参数, “$”的用法3.7 Shell—数组3.8 shell—expr命令…

java餐饮刀削面快餐店点餐服务系统springboot+jsp

网上点餐省去了客户很多不必要的时间和麻烦&#xff0c;给商家带来更多利益。同时&#xff0c;网上点餐可以辅助餐饮企业营销。传统的点餐是需要配备一个专业的服务员负责菜品介绍并记录顾客点单&#xff0c;确认后上交至后台厨房&#xff0c;厨房根据菜品种类安排做菜顺序最终…

数据结构:带头双向循环链表的实现

引言 单链表存在缺陷&#xff1a;需要从头开始找前一个节点 解决方法&#xff1a;双向链表 链表的结构&#xff08;8种&#xff09;&#xff1a; 1. 单向&#xff0c;双向 2. 带头、不带头 带头即为带哨兵位的头节点&#xff0c;第一个节点不存储有效数据。带头节点&#…