Slide 15
Slide 15 text
Idempotent Promise object
function submit (query) {
var dfr = Q.defer(), form = d3.select('.search'), input = form.select('.search__input');
if (query) {
_.defer(function () {
input.property('value', query);
form.classed({ 'position--in': false, 'position--out': true });
dfr.resolve(query);
});
} else {
form.on('submit', function (d, i) {
var value = input.property('value');
d3.event.preventDefault();
form.on('submit', null);
form.classed({ 'position--in': false, 'position--out': true });
global.location.hash = '#/' + global.encodeURIComponent(value);
dfr.resolve(value);
});
}
return dfr.promise;
}