[Dojo-interest] Problems creating dynamic Dialogs

Hockey, Ben Ben.Hockey at VerizonWireless.com
Thu Feb 4 12:06:05 EST 2010


it seems sane - just sent dijit._underaly to null after you destroy everything then it should probably work again.

ben... 

-----Original Message-----
From: dojo-interest-bounces at mail.dojotoolkit.org [mailto:dojo-interest-bounces at mail.dojotoolkit.org] On Behalf Of Tom Elliott
Sent: Thursday, February 04, 2010 11:50 AM
To: dojo-interest at mail.dojotoolkit.org
Subject: Re: [Dojo-interest] Problems creating dynamic Dialogs

Never mind, figured it out.

It's because the _destroyAll call kills the underlay, which I believe is the same widget for all dialogs in 1.4.

So I'm assuming that it's somehow flagged as having been created when I create the first dialog and thus not created again when I kill the first dialog (and the underlay) and create the second.

Anyone know if that's sane?

Tom

On 4 February 2010 16:27, Tom Elliott <mrtom at cantab.net> wrote:
> Looking into this a bit more it definitely seems to be being caused by 
> the dijit._destroyAll() call rather than anything to do with 
> dojo.empty(dojo.body());
>
> On 4 February 2010 16:12, Tom Elliott <mrtom at cantab.net> wrote:
>> Hey guys.
>>
>> I'm trying to do something that's potentially a little odd. Basically 
>> I need to destroy all dijits on a page and then create some new ones.
>> Sounds easy! I'm finding that with Dialogs about 50% of the time they 
>> get created fine by when you call show() you get the following error:
>>
>> exception in animation handler for: beforeBegin
>> :8080/js/dojo/dojo-release-1.4.1/dojo/dojo.js.uncompressed.js:10697TypeError:
>> Cannot call method 'setAttribute' of undefined
>> TypeError: Cannot call method 'getValue' of undefined
>>
>> The line number seem to suggest this is being thrown at line 10749 of 
>> dojo.js (uncompressed, v1.4.1): var value = 
>> _t.curve.getValue(_t._getStep()); Presumably because curve is 
>> undefined for this dojo.Animation.
>>
>> I assume this is because dijit._destroyAll is doing more than just 
>> destroying all the dijits on the page, but looking at the source I 
>> can't see what.
>>
>> Code is below, or see example at
>> http://telliott.net/dojoExamples/dojo-programaticDialog.html
>>
>> Help appreciated!
>>
>> Tom
>>
>> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
>> "http://www.w3.org/TR/html4/strict.dtd">
>> <html dir="ltr">
>>
>>    <head>
>>        <link rel="stylesheet" type="text/css"
>> href="http://ajax.googleapis.com/ajax/libs/dojo/1.4/dijit/themes/tund
>> ra/tundra.css">
>>    </head>
>>
>>    <body class="tundra ">
>>
>>    </body>
>>
>>    <script type="text/javascript"
>> src="http://ajax.googleapis.com/ajax/libs/dojo/1.4/dojo/dojo.xd.js"
>>    djConfig="parseOnLoad: true">
>>    </script>
>>    <script type="text/javascript">
>>        dojo.require("dijit.form.Button");
>>        dojo.require("dijit.Dialog");
>>
>>        var counter = 0;
>>
>>        generateButtonAndDialog = function() {
>>                var curCount = dojo.clone(counter);
>>
>>                initPage();
>>
>>                new dijit.form.Button({
>>                        id: 'button'+curCount,
>>                        label: 'Button ' + curCount,
>>                        onClick: function() {
>>                                dijit.byId('dialog'+curCount).show();
>>                        }
>>                }).placeAt(dojo.body(), 'last');
>>
>>                new dijit.Dialog({
>>                        id: 'dialog'+curCount,
>>                        title: 'This is dialog '+curCount,
>>                        content: 'This is some content for dialog ' + 
>> curCount + '. I was made at ' + new Date()
>>                });
>>
>>                counter++;
>>        };
>>
>>
>>
>>        initPage = function() {
>>                if (dijit) {
>>                        dijit._destroyAll();
>>                        dojo.empty(dojo.body());
>>                }
>>
>>                new dijit.form.Button({
>>                        id: 'startButton',
>>                        label: 'Click me to create a new Dialog',
>>                        onClick: function() {
>>                                generateButtonAndDialog();
>>                        }
>>                }).placeAt(dojo.body(), 'last');
>>
>>        };
>>
>>        dojo.addOnLoad(function() {
>>                initPage();
>>        });
>>    </script>
>>
>> </html>
>>
>>
>> --
>> www.twistyfish.co.uk
>>
>
>
>
> --
> www.twistyfish.co.uk
>



--
www.twistyfish.co.uk
_______________________________________________
FAQ: http://dojotoolkit.org/support/faq
Book: http://docs.dojocampus.org
Dojo-interest at mail.dojotoolkit.org
http://mail.dojotoolkit.org/mailman/listinfo/dojo-interest


The information contained in this message and any attachment may be
proprietary, confidential, and privileged or subject to the work
product doctrine and thus protected from disclosure.  If the reader
of this message is not the intended recipient, or an employee or
agent responsible for delivering this message to the intended
recipient, you are hereby notified that any dissemination,
distribution or copying of this communication is strictly prohibited.
If you have received this communication in error, please notify me
immediately by replying to this message and deleting it and all
copies and backups thereof.  Thank you.




More information about the Dojo-interest mailing list