NodeAttrs class
NodeAttrs is a facade for element attributes. The facade is responsible for normalizing attribute names as well as allowing access to the value of the directive.
class NodeAttrs { final dom.Element element; Map<String, List<AttributeChanged>> _observers; NodeAttrs(dom.Element this.element); operator [](String name) => element.attributes[_snakeCase(name, '-')]; operator []=(String name, String value) { name = _snakeCase(name, '-'); if (value == null) { element.attributes.remove(name); } else { element.attributes[name] = value; } if (_observers != null && _observers.containsKey(name)) { _observers[name].forEach((fn) => fn(value)); } } /** * Observe changes to the attribute by invoking the [AttributeChanged] * function. On registration the [AttributeChanged] function gets invoked * synchronise with the current value. */ observe(String attributeName, AttributeChanged notifyFn) { attributeName = _snakeCase(attributeName, '-'); if (_observers == null) { _observers = new Map<String, List<AttributeChanged>>(); } if (!_observers.containsKey(attributeName)) { _observers[attributeName] = new List<AttributeChanged>(); } _observers[attributeName].add(notifyFn); notifyFn(this[attributeName]); } }
Constructors
Properties
final Element element #
final dom.Element element
Operators
dynamic operator [](String name) #
operator [](String name) => element.attributes[_snakeCase(name, '-')];
dynamic operator []=(String name, String value) #
operator []=(String name, String value) { name = _snakeCase(name, '-'); if (value == null) { element.attributes.remove(name); } else { element.attributes[name] = value; } if (_observers != null && _observers.containsKey(name)) { _observers[name].forEach((fn) => fn(value)); } }
Methods
dynamic observe(String attributeName, AttributeChanged notifyFn) #
Observe changes to the attribute by invoking the AttributeChanged function. On registration the AttributeChanged function gets invoked synchronise with the current value.
observe(String attributeName, AttributeChanged notifyFn) { attributeName = _snakeCase(attributeName, '-'); if (_observers == null) { _observers = new Map<String, List<AttributeChanged>>(); } if (!_observers.containsKey(attributeName)) { _observers[attributeName] = new List<AttributeChanged>(); } _observers[attributeName].add(notifyFn); notifyFn(this[attributeName]); }