分享
查看: 1335|回复: 1

[求助] query中的字段代表什么?从哪里来的?

[复制链接]

query中的字段代表什么?从哪里来的?

发表于 2021-8-16 17:53:30 来自 求助 只看大图 阅读模式 倒序浏览
zzv_icon1335 zzr_icon1 查看全部
本帖最后由 黑夜的暗杀者 于 2021-8-16 18:00 编辑

类似官方示例里面的app.query('.Building')这种
avatar

77

主题

219

帖子

1162

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1162
橘子酱该减肥啦 发表于 2021-8-16 18:06:34 显示全部楼层
query详解
ThingJS的 query 方法,是通过针对模型的id或者name或者自定义属性,类型等进行具体查询,模型的id或者name是在客户端摆放后进行设置:

query中的字段代表什么?从哪里来的?   
自定义属性也是在客户端中也可以进行设置:
query中的字段代表什么?从哪里来的?   
或者动态创建时添加的,见下图:
query中的字段代表什么?从哪里来的?

ThingJS 的 query 方法,包括 全局 和 局部。

全局查询是对所有场景内的对象进行查询;

局部查询 是在一个对象的子对象中进行查询,如在一个楼层内查询某个设备;如果还需要更精确的缩小查询范围,还可以对查询结果进行继续查询;

由于场景加载是异步的 所以要查询场景内的物体时,需要在场景加载完成后查询才生效。

全局查询:
  1. var things = app.query(".Building");
复制代码
局部查询:
  1. building.query("[levelNum>2]").forEach(function(obj) {
复制代码
不管是局部查询还是全局查询,查询条件一般是一个字符串,如:#100,car01,.Thing,或正则表达式,可以根据物体的名称、类型、包含的属性等进行查询,也可以对某个对象的子物体进行查询;但是 query 结果是一个集合 因此集合中的元素需要单独通过下标获取。
  1. // 查询id是100的对象
  2. app.query("#100")[0];
  3. // 查询名称(name)是 car01 的对象
  4. app.query("car01");
  5. // 查询物体类是Thing的对象
  6. app.query(".Thing");
  7. //有物体类型属性的,无论值是什么
  8. app.query("[alarm]");
  9. //查询物体类型属性是粮仓的对象
  10. app.query("[报警=normal]");
  11. app.query('["userData/物体类型"="粮仓"]');
  12. // 查询levelNum属性大于2的对象,目前支持 <= , < , = , > , >=
  13. app.query("[levelNum>2]");
  14. // 正则表达式(RegExp)对象,目前只是对名称(name)属性值进行正则匹配
  15. app.query(/car/);
  16. // 上例等同于
  17. var reg=new RegExp('car');
复制代码

查询结果返回的是一个 Selector 对象,查询结果可以相加、排除,也可以直接绑定事件,或一些批量操作
  1. //在查询结果中再进行查询,可实现多个条件的“与操作”
  2. var sel =  app.query('.Thing').query( '[品牌=IBM]' );
  3. //实现多个条件的“或操作”
  4. var sel =  app.query( '[品牌=IBM]' );
  5. app.query('[品牌=HP]').add( sel );
  6. //实现“非操作”,not 操作支持标准的条件
  7. building.query('.Thing').not( 'cabinetB0' );
复制代码


avatar
游客~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

130700ppkpl8x3t7tt1b1t