The eventlistener is amazing and opens up all sorts of neat possibilities. For instance it becomes quite simple to roll your own ajax-enabled table component, with all the flexibility gained by building it from the ground up, but with almost all of the complexities removed.

To that end, I have one little problem with EventListener, which I think is a bug, but maybe I'm doing something different than intended. It seems that if you update a component inside which there is another component on which there is an EventListener, you will lose that EventListener.

For example:

<div jwcid="[EMAIL PROTECTED]">
<div id="nameHeader">Name<span jwcid="@Insert" value="ognl:sortAscending?' ^':' v'"/></div>
</div>


    @InitialValue("ognl:false")
    @Persist
    public abstract Boolean getSortAscending();
    public abstract void setSortAscending(Boolean sortAscending);

@EventListener(elements = "nameHeader", events = "onclick", async = true)
    public void sort(IRequestCycle cycle)
    {
        setSortAscending(!getSortAscending());
        cycle.getResponseBuilder().updateComponent("myTable");
    }

So if you load this up in a browser, then click on 'Name v', it changes to 'Name ^' like it should. But if you click it again, it has lost it's EventListener. The ajax response didn't include this bit which creates and connects the event:

tapestry.cleanConnect(dojo.byId("nameHeader"), "onclick", "event1702620775");
tapestry.event1702620775=function(e){
var content={beventname:"onclick"};
tapestry.event.buildEventProperties(e, content);
if (!content["beventtarget.id"]) content["beventtarget.id"] ="nameHeader"; tapestry.bind("/myapp/app? component=adminBillableItems&page=Admin&service=directevent&session=T", content);
 };
dojo.event.connect(dojo.byId("nameHeader"), "onclick", tapestry, "event1702620775");});

I suppose I could just do it myself, but shouldn't that bit of js just be included in the async response?

Thanks,

J

--
Julian Wood <[EMAIL PROTECTED]>

Software Engineer
Teaching & Learning Centre
University of Calgary

http://tlc.ucalgary.ca


Reply via email to