layui做界面在aardio中使用交互学习
winform的控件一般能满足日常的需求, 但是有些时候需要更漂亮的界面,那么就不太适合了
layui作为一个成熟的web控件, 提供的控件应该可以满足大部分需求了.
下面是本人从零开始学习layui在aardio中怎么使用, 记录下来供以后忘掉的时候查阅
1, 去layui官方下载最新的组件
https://res.layui.com/static/download/layui/layui-v2.5.4.zip
2, 在aardio中创建一个空的工程
3, 工程树中添加一个名字为layui的虚拟目录
4, 将下载到的layui压缩包里的layui文件夹里面的东西都解压到上面的目录中
5, 右键同步目录
6, 在工程树的layui文件夹下新建一个index.aardio代码文件
7, 去layui官方文档里查看初步使用方法 https://www.layui.com/doc/
可以看到官方提供了一个简单的提示框示例, 那么, 就把这个代码全盘复制到index.aardio文件里去
8, 打开aardio工程的主文件, main.aardio 在里面添加web功能代码
import web.blink.form;
import wsock.tcp.simpleHttpServer;
var wb = web.blink.form(mainForm);
wb.go(wsock.tcp.simpleHttpServer.startUrl("/layui/index.aardio"))上面为什么要把html文件写入到aardio后缀里面?
这样做可以在aardio中直接打开修改, 不用外部编辑器了

用到html基本上就是用无边框的窗口, 那么首先就是要实现layui模拟拖动标题栏了
首先, 在界面代码里添加交互扩展
wb.external = {
hitcaption = function(){
mainForm.hitCaption()
};
};定义完之后, 就可以在html里面利用javascript来调用这个函数了.
下面编写基于layui的html代码文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>开始使用layui</title>
<link rel="stylesheet" href="../layui/css/layui.css">
<script src="../layui/layui.js"></script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
<div class="layui-header" onmousedown="javascript: external.hitcaption();">
<div class="layui-logo">layui 后台布局</div>
<!-- 头部区域(可配合layui已有的水平导航) -->
<ul class="layui-nav layui-layout-left">
<li class="layui-nav-item"><a href="">控制台</a></li>
<li class="layui-nav-item"><a href="">商品管理</a></li>
<li class="layui-nav-item"><a href="">用户</a></li>
<li class="layui-nav-item">
<a href="javascript:;">其它系统</a>
<dl class="layui-nav-child">
<dd><a href="">邮件管理</a></dd>
<dd><a href="">消息管理</a></dd>
<dd><a href="">授权管理</a></dd>
</dl>
</li>
</ul>
<ul class="layui-nav layui-layout-right">
<li class="layui-nav-item">
<a href="javascript:;">
<img src="http://t.cn/RCzsdCq" class="layui-nav-img">
贤心
</a>
<dl class="layui-nav-child">
<dd><a href="">基本资料</a></dd>
<dd><a href="">安全设置</a></dd>
</dl>
</li>
<li class="layui-nav-item"><a href="">退了</a></li>
</ul>
</div>
<div class="layui-side layui-bg-black">
<div class="layui-side-scroll">
<!-- 左侧导航区域(可配合layui已有的垂直导航) -->
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed">
<a class="" href="javascript:;">所有商品</a>
<dl class="layui-nav-child">
<dd><a href="javascript:;">列表一</a></dd>
<dd><a href="javascript:;">列表二</a></dd>
<dd><a href="javascript:;">列表三</a></dd>
<dd><a href="">超链接</a></dd>
</dl>
</li>
<li class="layui-nav-item">
<a href="javascript:;">解决方案</a>
<dl class="layui-nav-child">
<dd><a href="javascript:;">列表一</a></dd>
<dd><a href="javascript:;">列表二</a></dd>
<dd><a href="">超链接</a></dd>
</dl>
</li>
<li class="layui-nav-item"><a href="">云市场</a></li>
<li class="layui-nav-item"><a href="">发布商品</a></li>
</ul>
</div>
</div>
<div class="layui-body">
<!-- 内容主体区域 -->
<div style="padding: 15px;">内容主体区域</div>
</div>
<div class="layui-footer">
<!-- 底部固定区域 -->
© layui.com - 底部固定区域
</div>
</div>
<script>
//JavaScript代码区域
layui.use('element', function(){
var element = layui.element;
});
</script>
</body>
</html>
回复#3 @dsp2138 :
上面不是说了吗 用wb.external
就如你所问:
你想让网页获取变量,main.aardio里定义
wb.external = {
get变量a = function(){
return mainform.edit.text;
};
}然后网页里用js获取,用external.get变量a()
想要网页发送数据给aar, 同理
wb.external = {
网页传过来数据了 = function(a,b,c){
//把传过来的数据求和
mainform.edit.text = a+b+c;
};
}网页里js同样用external.网页传过来数据了(12,34,56);就可以了啊
至于你想怎么灵活传递数据这个就是你逻辑需要考虑的问题了.
还有个问题,是关于doScript的用法问题
假如现在执行wb.doScript(`alert(111`)
那么在网页一加载就会弹出js原生的警告框。
但如果网页中先加载layui,也有函数
aardio_call=function(){
wb.doScript(`layer.msg('Hello World')`)
}
网页中调用 external.aardio_call(),而且layer定义时也去掉了 var,变为全局变量。
不管是web.form还是kit运行后都会出错,这是为何。
而我把aardio_call放在一个button里,假如这样
<button type="button" class="layui-btn layui-btn-sm" onclick="javascript:external.aardio_call('javascript:external.hello伪代码中调用')">开始使用</button>
这样被动点击在运行就正常了。
这是怎么回事?
如何让layui的元素主动执行,而不是被动?
登录后方可回帖

为了方便以后在aar中手写layui的html代码, 我写了一个针对layui中用到的类名的智能提示库
后面会慢慢更新这个库, 方便以后的书写,
看似很无聊的事情, 但是对我这种html从没研究过的人来说,确实在aar里使用方便了不少
下面的html测试代码都是根据这个库来写的.