[Dojo-interest] Problems creating dynamic Dialogs

Tom Elliott mrtom at cantab.net
Thu Feb 4 12:34:21 EST 2010


Yup, that's what I'm doing and it works.

Any idea why it's not set to null in _destroyAll??

On 4 February 2010 17:06, Hockey, Ben <Ben.Hockey at verizonwireless.com> wrote:
> 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.
>
>
> _______________________________________________
> 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
>



-- 
www.twistyfish.co.uk


More information about the Dojo-interest mailing list