Properties now change their value if an array is modified. Properties don't invoke any callbacks if the value hasn't actually changed. And a few other improvements.
This commit is contained in:
@ -211,7 +211,13 @@ class IgniteTemplate {
|
||||
}
|
||||
|
||||
if (value instanceof IgniteProperty) {
|
||||
this._callbacks.push(value.attachOnChange((oldValue, newValue) => this.onPropertyChanged(oldValue, newValue, name, converter)));
|
||||
this._callbacks.push(value.attachOnChange((oldValue, newValue) => this.onPropertyChanged(name, (converter != null ? converter(newValue) : newValue))));
|
||||
this._callbacks.push(value.attachOnPush((list, items) => this.onPropertyChanged(name, (converter != null ? converter(list) : list))));
|
||||
this._callbacks.push(value.attachOnUnshift((list, items) => this.onPropertyChanged(name, (converter != null ? converter(list) : list))));
|
||||
this._callbacks.push(value.attachOnPop((list) => this.onPropertyChanged(name, (converter != null ? converter(list) : list))));
|
||||
this._callbacks.push(value.attachOnShift((list) => this.onPropertyChanged(name, (converter != null ? converter(list) : list))));
|
||||
this._callbacks.push(value.attachOnSplice((list, start, deleteCount, items) => this.onPropertyChanged(name, (converter != null ? converter(list) : list))));
|
||||
|
||||
this._properties[name] = {
|
||||
value: (converter != null ? converter(value.value) : value.value),
|
||||
reflect: (reflect == true ? value : null)
|
||||
@ -1005,19 +1011,11 @@ class IgniteTemplate {
|
||||
/**
|
||||
* Called when a property on this template was changed and needs to be updated
|
||||
* on the template's element.
|
||||
* @param {any} oldValue
|
||||
* @param {any} newValue
|
||||
* @param {string} propertyName
|
||||
* @param {Function} converter
|
||||
* @param {any} newValue
|
||||
* @ignore
|
||||
*/
|
||||
onPropertyChanged(oldValue, newValue, propertyName, converter) {
|
||||
if (converter !== null) {
|
||||
IgniteRenderingContext.push();
|
||||
newValue = converter(newValue);
|
||||
IgniteRenderingContext.pop();
|
||||
}
|
||||
|
||||
onPropertyChanged(propertyName, newValue) {
|
||||
if (this.element) {
|
||||
//Use the set value function and don't reflect the change because it came from above which
|
||||
//would be the reflected property, this reduces some functions being called twice that don't need to be.
|
||||
|
Reference in New Issue
Block a user