Added ability to use arrays of properties for the property function.
This commit is contained in:
parent
82834320f6
commit
9040bb8d45
@ -261,7 +261,7 @@ class IgniteTemplate {
|
||||
/**
|
||||
* Sets a property on the element this template will construct.
|
||||
* @param {String} name Name of the property to set.
|
||||
* @param {Any|IgniteProperty} value Value of the property to use. If a Property is passed the value will auto update.
|
||||
* @param {Any|IgniteProperty|IgniteProperty[]} value Value of the property to use. If a Property is passed the value will auto update.
|
||||
* @param {Boolean} reflect If true whenever this property is changed it's value will be passed back to the Property that was passed as value if one was passed.
|
||||
* @param {Function} converter Optional function that can be used to convert the value if needed.
|
||||
* @returns {IgniteTemplate} This ignite template so function calls can be chained.
|
||||
@ -289,6 +289,28 @@ class IgniteTemplate {
|
||||
value: (converter != null ? converter(value.value) : value.value),
|
||||
reflect: (reflect == true ? value : null)
|
||||
};
|
||||
} else if (Array.isArray(value) && value.length > 0 && value[0] instanceof IgniteProperty) {
|
||||
//There must be a converter for this to work correctly
|
||||
if (!converter) {
|
||||
throw "Cannot pass an array of properties without using a converter!";
|
||||
}
|
||||
|
||||
//Attack a callback for all the properties
|
||||
value.forEach(prop => {
|
||||
if (prop instanceof IgniteProperty) {
|
||||
this._callbacks.push(prop.attachOnChange((oldValue, newValue) => this.onPropertyChanged(name, converter(...value.getPropertyValues()))));
|
||||
this._callbacks.push(prop.attachOnPush((list, items) => this.onPropertyChanged(name, converter(...value.getPropertyValues()))));
|
||||
this._callbacks.push(prop.attachOnUnshift((list, items) => this.onPropertyChanged(name, converter(...value.getPropertyValues()))));
|
||||
this._callbacks.push(prop.attachOnPop((list) => this.onPropertyChanged(name, converter(...value.getPropertyValues()))));
|
||||
this._callbacks.push(prop.attachOnShift((list) => this.onPropertyChanged(name, converter(...value.getPropertyValues()))));
|
||||
this._callbacks.push(prop.attachOnSplice((list, start, deleteCount, items) => this.onPropertyChanged(name, converter(...value.getPropertyValues()))));
|
||||
}
|
||||
});
|
||||
|
||||
this._properties[name] = {
|
||||
value: converter(...value.getPropertyValues()),
|
||||
reflect: (reflect == true ? value : null)
|
||||
};
|
||||
} else {
|
||||
this._properties[name] = {
|
||||
value: (converter != null ? converter(value) : value),
|
||||
|
Loading…
x
Reference in New Issue
Block a user