dojo.connect()

Deprecated.

Dojo versions prior to 1.7 used dojo.connect() for event handling and advice. But it's functionality has been replaced by dojo/on module and the dojo/aspect module's after() method.

Events

As of Dojo 1.7, the preferred way of handling events is to use the new lightweight dojo/on module.

For compatibility reasons, the dojo.connect api's will remain fully supported through remaining 1.x releases, but will likely be removed in Dojo 2.0. Migration from connect() to on() should be straightforward as the api signature is very similar.

Old code like:

var handle = dojo.connect(node, "onclick", callback);
...
dojo.disconnect(handle);

should be converted to:

require(["dojo/on"], function(on){
  var handle = on(node, "click", callback);
  ...
  handle.remove();
});
Note that:
  • the "on" prefix was dropped, and "onclick" became "click"
  • the "handle" has a remove() method, rather than there being a function like dojo.disconnect()

Advice

The preferred way of handling after advice is to use the new lightweight dojo/aspect's after() method.

Old code:

var handle = dojo.connect(myInstance, "execute", callback);
...
dojo.disconnect(handle);

is changed to

require(["dojo/aspect"], function(aspect){
    aspect.after(myInstance, "execute", callback);
    ...
    handle.remove();
});

Note that callback() should not return a value, because if it did the returned value would be reported as the value that myInstance.execute() appeared to return, which is not what dojo.connect() did.