What Exactly is a Widget?
Dijit components are handy encapsulations or user interface functionality. That's what made Visual Basic's component based technology so appealing twenty years ago.
Widgets are components in the abstract sense, but what are they from a coding standpoint?
So far, we have a vague idea, at least for the declarative case, that a widget is a snippet of HTML with a dojoType, like this:
<div dojoType="dijit.layout.ContentPane" href="http://localhost/too/many/slashes.html" ></div>
There are four main ways to get a widget refrence:
Dijit components are handy encapsulations or user interface functionality. That's what made Visual Basic's component based technology so appealing twenty years ago.
Widgets are components in the abstract sense, but what are they from a coding standpoint?
So far, we have a vague idea, at least for the declarative case, that a widget is a snippet of HTML with a dojoType, like this:
<div dojoType="dijit.layout.ContentPane" href="http://localhost/too/many/slashes.html" ></div>
There are four main ways to get a widget refrence:
- You can set the jsId= attribute in the tag, which creates a global JavaScript variable with that name
- You can use dijit.byId(id). This is sueful if you had set the id= attribute on your widget
- You can use dijit.byNode(nodeVariable) when you don't have the id attribute but you have the DOM node itself. You can usually get the node with dojo.query
- Similarly, dijit.getEnclosingWidge(nodeVariable) will get the "nearest" widget surrounding it, if you have a DOM node inside the widget.
- You can read an attribute or call a method on another object that returns a widget. For example, the attribute adjacent of dojo.layout.StackContainer gives you back a widget
For examples:
dojobook.widgets.DeclarativePortal.setUrl = function() {
// returns back the div tag of the selected AccordionPane
var paneList = dijit.byId("ups" );
// Get the selected dijit.layout.AccordionPane. This is
// kept in selectedChildWidget
var chosenPane = paneList.selectedChildWidget;
// Now, get the value from the textbox. Note we can use
// dojo.byId() here because the .value property is a property of Node
var newUrl = dojo.byId("newUrl" ).value;
// Change the URL from which the content comes. Using setHref
// changes the content right away.
chosenPane.setHref("services/pure_proxy.php?url=" + newUrl);
}
...
<label for="newUrl">New URL:</label>
<input type="text" length="50" id="newUrl">
<button dojoType="dijit.form.Button" />
Set
<script type="dojo/method" event="onClick" args="evt"> dojobook.widgets.DeclarativePortal.setUrl();
</script>
</button>
</body></html>
Comments
Post a Comment