最近在写一个项目,前端技术使用的是Vue,在与lua的交互过程,是通过一个公共JS,前端调用公共js的方法给lua发送命令,lua接到命令,去执行一些方法,然后又通过回调返回到了前端,由于是第一次写这样的项目,遇到了一些坑,总结下。

1、提示

null is not an Object (evaluating 'this.msgList')

  在解析Vue中的数据的时候,在回调函数中,this的指向丢失,导致报错,最终采用了箭头函数的方法来解决了这个问题

2、

null is not an Object (evaluating 'document.getElementById')

  在Vue的methods里面去操作dom遇到了问题,考虑是dom节点还没有的情况下拿不到dom,这个选择要再mounted里面来执行

3、

var cbDispatcher = null;
var eventDispatcher = null;var H5SDK = {};H5SDK.get=function(){}H5SDK.put=function(){}

由于在公共变量里面有三个变量,lua也有引用其中的方法,我把这个方法改写成了Es6的,export default H5SDK,在lua在引用方法的时候就找不到了 ,因此最后的解决方案是在html里面引入了JS。

4、

在Vue的created里面给lua发送了多个命令同一个请求后台数据的命令,但lua同时只能处理一个命令,因此只会执行最后一次发送的命令,覆盖了前面几次的命令,解决方法呢,就是采用了定时器来延迟执行。

5、页面无法滚动

  一方面lua代码禁止了view的滚动,另一方面,前端也写了overflow:hidden。

  解决方法:前端删除overflow:hidden,lua:View.scrollEnable=YES,并且webview的自适应改为false,防止webview下面的内容暴露。

6、请求回来的数据格式和前端需要的数据不一致,这时候就要做容错处理,判断下如果不是需要的数据return就可以了。

7、前端和客户端lua交互的请求数据方式封装为一个方法,url,params由web端来传,主要post与get请求的不同处理。

8、客户端在访问本地开发环境的时候图片加载出来是框框,编译完了之后,访问html页面也一样,

  解决办法:在updated里面加入了window.onload之后再与乱交互,保证静态资源的加载;还有个问题,就是请求后台的数据发送命令的时候偶现性不加载图片,发现一旦发送命令,就把js引擎的 http线程给cancel掉了,因此要保证静态资源加载完毕再发送命令,也可以绕过去依赖计数线程来达到异步加载。

9、乱点击会挂掉,处理方式客户端解答是跳过乱点击报的错就ok了,有更好的方法,欢迎留言。

10、需求左侧left要和右侧一样 在Vue中动态获得元素的高度,在updated生命周期中,只能获取上个状态。

  最后解决方案是使用display:flex;把设置的高度全部去掉,使用的是

  align-item:stretch

  • stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

  然后给容器设置了个最小高度:window.innerHeight。

如果觉得文章不错,可以给小编发个红包给予鼓励.

转载于:https://www.cnblogs.com/yiyi17/p/8760769.html

JS在与lua的交互心得相关推荐

  1. 转载:js和as间的交互

    转载一: 提及AS3与外部脚本的交互,笔者认为可以总结成两种.一是AS3调用外部函数,二是外部脚本调用AS3函数.无外乎就 这两种.在调用函数的同时,我们还可以向函数传递一些参数.这就达到了传递数据的 ...

  2. doo14 视图和js的按钮上面的交互

    doo14 视图和js的按钮上面的交互 自定义按钮上面的属性应用操作 js代码块 odoo.define({var FormController = require('web.FormControll ...

  3. java内嵌chrome浏览器,JS和JAVA如何进行交互

    2019独角兽企业重金招聘Python工程师标准>>> 为了上线之后,客户不用安装chrome (主要还是客户用IE.firefox居多),我们现在开发都是使用chrome ,为了提 ...

  4. flash和js通过什么类如何交互

    flash和js通过类ExternalInterface进行交互. ExternalInterface有两个方法call和addCallback: 1.ExternalInterface.addCal ...

  5. objective-c与Lua的交互(一)

    objective-c与Lua的交互(一) 第一步的学习转自于: ios开发愤怒的小鸟的Lua语言:Wax框架详解(一) http://www.duote.com/tech/ios/19919_3.h ...

  6. 使用node js 和天猫精灵 开发交互

    这里写自定义目录标题 使用node js 和天猫精灵 开发交互 准备工作 最好的教程 使用node js 和天猫精灵 开发交互 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你 ...

  7. java,js,jstl,EL的简单交互

    EL全名Expression Language.EL提供了在JSP脚本编制元素范围外使用运行时表达式的功能. 脚本编制元素是指页面中能够用于在JSP文件中嵌入java代码的元素. JSP标准标记库(j ...

  8. Netflix发布Polly.JS,一个用于HTTP交互的开源库

    Netflix最近发布了Polly.JS,一个用于记录.重放和模拟HTTP交互的开源库. \\ Polly利原生机浏览器API来模拟请求和响应,以便减少配置工作,为开发人员提供一种管理HTTP请求的机 ...

  9. Ember.js如何与后端服务交互?adapter、store、ember data关系揭秘

    2019独角兽企业重金招聘Python工程师标准>>> 文章来源:Ember Teach 本项目讲解如何使用adapter.EmberData以及怎么连接到本地数据库. 项目简介 主 ...

最新文章

  1. DocumentManager 在标签位置显示气泡框 z
  2. 一个含有crc32算法的CrackMe分析
  3. [网络安全自学篇] 五十七.PE文件逆向之什么是数字签名及Signtool签名工具详解(一)
  4. Android开发的之基本控件和详解四种布局方式
  5. vue表格刷新数据_Vue.js+Layer表格数据绑定与实现更新的实例
  6. 自己动手写PHP MVC框架
  7. SqlDependency不起作用
  8. 【H.264/AVC 句法和语义详解】(十二):H264中的帧场编码模式详解
  9. 如何将Figma转成蓝湖教程
  10. 问题 B: PIPI发工资(拓扑排序遍历)
  11. Excel催化剂开源第35波-图片压缩及自动旋转等处理
  12. 作为硅谷大佬,大战周鸿祎是怎样的一种体验?|独家采访
  13. PCIe 分类、速度
  14. 扇贝python编程课 百度云,扇贝编程python课程分享
  15. 格签名相似概念区分: SVP、SIS、LWE的区分
  16. 2、GO语言多进程编程
  17. STM32 擦除flash失败问题
  18. 炫酷3D相册❤ 520七夕情人节表白网页制作❤(HTML+CSS+JavaScript)
  19. SaaSBase:最受欢迎的ERP软件有哪些
  20. K2 BPM_“流程平台可以解决哪些问题?”,企业关心的都在这里(二)

热门文章

  1. 跨浏览器测试工具推荐
  2. CentOS 非图形界面用户如何上网
  3. ppt转pdf软件免费版
  4. lua中table函数库
  5. 变电站接地网的优化设计22437
  6. axios Post无法传递数据的解决方案
  7. linux下的图形界面扫雷游戏(Gtk+2.0)
  8. 蓝桥杯 ADV-175 算法提高 三个整数的排序
  9. 蓝桥杯 ALGO-98 算法训练 数位分离
  10. 【操作系统】输入输出系统(下下)-思维导图0.0