code: function __fireAttrChange(self, when, name, prevVal, newVal, subAttrName, attrName, data) {
          attrName = attrName || name;
          return self.fire(whenAttrChangeEventName(when, name), util.mix({
              attrName: attrName,
              subAttrName: subAttrName,
              prevVal: prevVal,
              newVal: newVal
          }, data));
      }
docs: fire attribute value change fire attribute value change