Interface: IProperties

miot/Properties~IProperties

Methods

addListener(names, callback) → {EventSubscription}

监听属性变化事件

Parameters:
Name Type Description
names *

要监听的属性名, 可以为string 或数组, 如果为*则表示监听所有的属性变化

callback *
Returns:
Type
EventSubscription
Examples
const eventSubscription = myDeviceProperties.addListener("prop1", (deviceProperties)=>{...})
     ...
     eventSubscription.remove()
const sub =  myDeviceProperties.addListener("*", (deviceProperties)=>{...})
     ...    
     sub.remove()
const sub = myDeviceProperties.addListener(["prop1", "prop2"], (deviceProperties)=>{...})
     ...
     sub.remove()

clear() → {IProperties}

清除缓存并删除所有的事件监听

Returns:
Type
IProperties

getProperties(…names) → {Map.<string, object>}

批量获取属性的 Map

Parameters:
Name Type Attributes Description
names * <repeatable>

属性名

Returns:
Type
Map.<string, object>

getProperty(name)

获取属性

Parameters:
Name Type Description
name *

getPropertyNames() → {Set.<string>}

获取所有的属性名

Returns:
Type
Set.<string>

hasProperty(name) → {boolean}

判断是否存在某个属性

Parameters:
Name Type Description
name *
Returns:
Type
boolean

isPropertyChanged(name) → {boolean}

某个属性值是否被改变过

Parameters:
Name Type Description
name *
Returns:
Type
boolean

notifyPropertiesChanged(…names) → {IProperties}

检查并触发属性变化事件, 一般情况下, 在设置了新的属性数值后, 应该调用此方法触发监听事件

Parameters:
Name Type Attributes Description
names * <repeatable>

属性名, 如果为空或 names[0]=="*" 则自动检查所有的属性变化

Returns:
Type
IProperties
Examples
myDeviceProperties.notifyPropertiesChanged()
     myDeviceProperties.notifyPropertiesChanged("*")
myDeviceProperties.notifyPropertiesChanged("prop1", "prop2")

removeAllListeners() → {IProperties}

删除所有的事件监听

Returns:
Type
IProperties

removeAllProperties() → {IProperties}

删除所有属性

Returns:
Type
IProperties

removeListeners(…names) → {IProperties}

删除属性相关的事件

Parameters:
Name Type Attributes Description
names * <repeatable>

属性名, 如果 names[0] == "*", 表示删除所有事件监听

Returns:
Type
IProperties

removeProperties(…names) → {IProperties}

删除一系列属性

Parameters:
Name Type Attributes Description
names Array.<string> <repeatable>

如果第一个 name 为*, 则表示删除所有属性

Returns:
Type
IProperties

removeProperty(name) → {IProperties}

删除属性

Parameters:
Name Type Description
name string

属性名称, 如果为*则表示删除所有属性

Returns:
Type
IProperties

setProperties(nameValues, nameConvertor)

批量设置属性值

Parameters:
Name Type Default Description
nameValues *

-属性数值map, 可以为Map<string, object>或object

nameConvertor function null

-转换属性名, 如果没有则不转换

Examples
Map map = new Map();
    map.set("a", 1)
    map.set("b", 2)
    myDeviceProperties.setProperties(map, n=>n.startsWith("prop.")?n.substr(5):n)     
    
myDeviceProperties.setProperties({a:1, "b":2})

setProperty(name, value) → {IProperties}

设置属性, 同时将设置属性数值被改变

Parameters:
Name Type Description
name *
value *
Returns:
Type
IProperties

triggerListeners(…names) → {IProperties}

强制触发属性相关事件,但不会检查相关属性是否已经改变

Parameters:
Name Type Attributes Description
names * <repeatable>

如果names[0]=="*"则表示触发所有的事件

Returns:
Type
IProperties