Skip to content

Commit

Permalink
Fix for Delegator.Ajax; preserving instance of Request, but resetting…
Browse files Browse the repository at this point in the history
… options each time.
  • Loading branch information
anutron committed Nov 1, 2013
1 parent 013b0f7 commit aed106a
Showing 1 changed file with 42 additions and 39 deletions.
81 changes: 42 additions & 39 deletions Source/Delegators/Delegator.Ajax.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,47 +33,50 @@ name: Delegator.Ajax

var request = link.retrieve('Delegator.Ajax.Request');
if (!request){
request = new Request.HTML(
Object.cleanValues({
method: api.get('method'),
evalScripts: api.get('evalScripts'),
url: api.get('href') || link.get('href'),
spinnerTarget: spinnerTarget || target,
useSpinner: api.getAs(Boolean, 'useSpinner'),
update: requestTarget,
onSuccess: function(){
//reverse the elements and inject them
//reversal is required since it injects each after the target
//pushing down the previously added element
var elements = requestTarget.getChildren();
if (api.get('filter')){
elements = new Element('div').adopt(elements).getElements(api.get('filter'));
}
switch(action){
case 'replace':
var container = target.getParent();
elements.reverse().injectAfter(target);
api.fireEvent('destroyDom', target);
target.destroy();
api.fireEvent('ammendDom', [container, elements]);
break;
case 'update':
api.fireEvent('destroyDom', target.getChildren());
target.empty();
elements.inject(target);
api.fireEvent('ammendDom', [target, elements]);
break;
default:
//injectTop, injectBottom, injectBefore, injectAfter
if (action == "injectTop" || action == "injectAfter") elements.reverse();
elements[action](target);
api.fireEvent('ammendDom', [target, elements]);
}
}
})
);
request = new Request.HTML();
link.store('Delegator.Ajax.Request', request);
}
request.removeEvents('success');
request.setOptions(
Object.cleanValues({
method: api.get('method'),
evalScripts: api.get('evalScripts'),
url: api.get('href') || link.get('href'),
spinnerTarget: spinnerTarget || target,
useSpinner: api.getAs(Boolean, 'useSpinner'),
update: requestTarget,
onSuccess: function(){
//reverse the elements and inject them
//reversal is required since it injects each after the target
//pushing down the previously added element
var elements = requestTarget.getChildren();
if (api.get('filter')){
elements = new Element('div').adopt(elements).getElements(api.get('filter'));
}
switch(action){
case 'replace':
var container = target.getParent();
elements.reverse().injectAfter(target);
api.fireEvent('destroyDom', target);
target.destroy();
api.fireEvent('ammendDom', [container, elements]);
break;
case 'update':
api.fireEvent('destroyDom', target.getChildren());
target.empty();
elements.inject(target);
api.fireEvent('ammendDom', [target, elements]);
break;
default:
//injectTop, injectBottom, injectBefore, injectAfter
if (action == "injectTop" || action == "injectAfter") elements.reverse();
elements[action](target);
api.fireEvent('ammendDom', [target, elements]);
}
}
})
);

// allow for additional data to be encoded into the request at the time of invocation
var data;
// if the encode option is set
Expand Down

0 comments on commit aed106a

Please sign in to comment.