# Module: mixins/signalable

## mixins/signalable

Add the ability to fire signals on your objects. Signals are events, but hard coded into the object and don't rely on strings like other events and `eventables`

Source:
  - mixins/signalable.js, line 2

### Requires

- module:base
- module:signals
- module:base/logger

### Classes

Signal

### Type Definitions

#### SignalOptions

  ##### Properties:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `memorize` | boolean | <optional> | If Signal should keep record of previously dispatched parameters and automatically execute listener. Defaults to `false`
  `params` | array | <optional> | Default parameters passed to listener during `Signal.raise`/`Signal.fire`/`Signal.trigger` and SignalBinding.execute. (curried parameters). Defaults to `null`
  `context` | object | <optional> | When provided the signal will be raised in the context of this object. Defaults to `this` - the signal host

  Source:
    - mixins/signalable.js, line 16

  ##### Example

      signals:{
          opened: null,
          twisted: { memorize:true },
          applied: { memorize: false, params:[one, two] }
      }

      // Setting the context initially can be a hassle, so this also supports a function that returns a hash

      signals: function(){
          return {
          opened: null,
          twisted: { memorize:true },
          applied: { memorize: false, params:[one, two] },
          reversed: {context: someOtherRuntimeObject}
          };
      }