This example will build on the previous one. The only modification will be to add a check to the refresh method. The refreshSelf will only be called if a change to the attributes is detected.
The computeAttributes method returns a Javascript object containing properties for each attribute which has changed. So a check like if (changedAttributes.attr1 || changedAttributes.attr2 || changedAttributes.attr3) etc. can be used to detect the change. See the refresh method in $:/core/modules/widgets/view.js for an example showing the check for multiple attributes.
For this example, message is the only attribute implemented.
/*
Refresh if the attribute value changed since render
*/MyWidget.prototype.refresh = function(changedTiddlers) {
// Find which attributes have changedvar changedAttributes = this.computeAttributes();
if (changedAttributes.message) {
this.refreshSelf();
returntrue;
} else {
returnfalse;
}
};