Hi Fabio,
That's a way of doing it yes, which I use as well. However, my goals
was to use the same deleteItem method I already have. As this method
does more than just a direct ajaxRequest.
On the other hand I could send a deleteAll ajaxRequest in the
deleteContainer method, instead of 10x the deleteItem method (= 10x
the same checks, 10x ajaxRequest).
But OK, let's say I would like to use already created methods.. how
would you implement callback stuff or what's you way of doing things
when you have to "wait" for the return of a method you call, before
you can proceed with the rest a bigger function?
E.g.
foreach(items as item) {
if(!this.deleteItem(item)) error = true;
}
if(!error) deleteContainer
else showMessage;
like you can in php etc.
Cheerio
On Aug 2, 3:54 am, Fábio M. Costa <[email protected]> wrote:
> What i would do:
> on deleteItem:
> make the ajaxRequest first and onSuccess remove visually the div.
>
> on deleteContainer:
> check for the items i got inside and send one request, onSuccess it will
> tell me if all the items were deleted or not (this one will depend on what
> you want, it could tell you which ones it was able to remove) and them
> remove visually the items.
>
> The thing is, make sure it worked serverside and change things on the dom
> onSuccess of the request, or you cold have inconsistencies.
>
> --
> Fábio Miranda Costa
> Solucione Sistemas
> Front-End Engineerhttp://meiocodigo.com
>
> On Sat, Aug 1, 2009 at 10:26 PM, Rolf -nl <[email protected]> wrote:
>
> > Hi all,
>
> > Another one of those "I wonder how others..." questions I have.
>
> > For this case I have one or more <items> that can be placed into a
> > <container>.
>
> > I have a method called "deleteItem" and I have a method called
> > "deleteContainer"
>
> > "deleteItem" checks some stuff, prompts maybe a confirm dialog, and
> > does ajax request to actually delete the item from a database or kills
> > a file. This all results in either a succesfull delete or an error.
>
> > "deleteContainer" should destroy the whole container (e.g. it's a div
> > holding various item-divs) and my idea is to:
> > 1. Check for items inside.
> > 2. If there are any, loop through the number of items and call the
> > "deleteItem" for each item.
> > 3. Kill the container (e.g. in a database and/or on screen destroying
> > the element).
>
> > Ok, so I would like to cancel the "deleteContainer" action if there's
> > a problem with "deleteItem" for one of the items inside the container.
> > You know; perhaps the ajax request generated an error, or the user
> > pressed cancel on the confirm dialog. The process should stop and the
> > container should not be deleted.
>
> > Because JS is asynchronous, the code below a foreach loop (the foreach
> > to delete all items in container) that will destroy the container is
> > executed instantly and doesn't wait for the dialog or an ajax error
> > inside the deleteItems method.
>
> > Does this make sense?
>
> > I'm now handling this server side: detroying container runs php and
> > first deletes any elements from the database and if there's no error,
> > it will destroy the container. This will either return a complete
> > success or an error with details so that in the JS I can see what
> > happened and what I should do visually on screen.
>
> > But are there any tips, examples, best practices, ideas on how to
> > handle this within a JS class?
>
> > Cheers,
> > Rolf