分享
查看: 3502|回复: 0

[分享] 浅谈ThingJS之对象查询方法

[复制链接]

浅谈ThingJS之对象查询方法

发表于 2019-8-30 11:02:49 来自 分享 阅读模式 倒序浏览
zzv_icon3502 zzr_icon0 查看全部

在开发中,引入了场景,添加了对象,那我们如何尽快的找到对象呢?


方法如下:

1.在父类/子类树上,通过parent、children属性找到要控制的对象

2.在分类对象属性树上,通过类身上分类属性找到要控制的对象

3.使用query方法


ThingJS 的 query 方法,包括 全局 和 局部,全局查询是对场景内的所有对象进行查询;局部查询 是在一个对象的子对象中进行查询,如在一个楼层内查询某个设备;如果还需要更精确的缩小查询范围,还可以对查询结果进行继续查询;

查询条件一般是一个字符串,如:car01,.Thing,#100,或正则表达式,可以根据物体的名称、类型、包含的属性等进行查询,也可以对某个对象的子物体进行查询;


使用query方法查询对象

全局查询

  1. app.on('load', function () {
  2. let buildings = app.query('.Building');
  3. buildings.style.outlineColor = "#0000ff";
  4. });
复制代码


局部查询

  1. app.on('load', function (ev) {
  2. let buildings = app.query('.Building');
  3. buildings.forEach(function (building) {
  4. building.query('[levelNum > 1]').forEach(function(obj) {
  5. obj.style.outlineColor = "#0000ff";
  6. })
  7. })
  8. });
复制代码


根据对象名称进行查询

  1. app.query('.Thing')//查询thing类的物体
  2. app.query('.Building')//查询building建筑类
  3. app.query('.Floor')//查询floor楼层类
  4. app.query('.Room')//查询room房间类
复制代码


根据物体类进行查询

  1. app.query('.Thing')//查询thing类的物体
  2. app.query('.Building')//查询building建筑类
  3. app.query('.Floor')//查询floor楼层类
  4. app.query('.Room')//查询room房间类
复制代码


根据对象ID进行查询

  1. app.query('#100')//id查询记得加#,格式可以是数字也可以是字符串,例如:#100,#userID100
复制代码


查询某一类物体类型的

  1. app.query('[alarm]')//查询类型全部是alarm的对象
复制代码


准确查询某一类型的物体

  1. app.query('["userData/物体类型"="粮仓"]')//根据物体属性查询
复制代码


查询levelNum>2的对象

  1. app.query('[levelNum>2]')//查询某一建筑2层以上的楼层对象,目前支持>,<,=,>=,<=
复制代码


筛选查询操作

  1. app.query('.Thing').query('[品牌=IBM]');//在查询结果中再进行查询
  2. var sel = app.query('[品牌=AA]');
  3. app.query('.Thing').add(sel)//或查询,查询.Thing类的或者属性[品牌=AA]的
  4. app.query('.Thing').not('car01');//排除查询,查询除了car01的所有Thing
复制代码


在父类/子类树上,通过parent、children属性找到要控制的对象

  1. let buildings = app.query('.Building');
  2. buildings.forEach(function (building) { //建筑类
  3. building.floors.forEach(floor => { //建筑下的楼层类
  4. floor.style.opacity = 0.5;
  5. })
  6. })
复制代码


总结:查询结果返回的是一个selector对象(数组对象),可以对查询结果直接绑定事件,或一些批量操作。

浅谈ThingJS之对象查询方法

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

本版积分规则

130700ppkpl8x3t7tt1b1t