你可能没在使用Dojo, 或者在1.8 版本中依旧使用 1.6的代码而不知道如何继续。 你一直在听说 "AMD" 及 "baseleass", 但不知道如何去做或从哪开始。 本教程就是关于"AMD"以及Dojo的一些特性。
dojo.ready(function(){ dojo.byId("helloworld").innerHTML = "Hello World!"; });
require(["dojo/dom", "dojo/domReady!"], function(dom){ dom.byId("helloworld").innerHTML = "Hello New World!"; });
require(["dojo/dom"], function(){ // some code var dom = require("dojo/dom"); // some more code });
dojo.require("dojo.string"); dojo.byId("someNode").innerHTML = dojo.string.trim(" I Like Trim Strings你现在可以使用如下方式
require(["dojo/dom", "dojo/string", "dojo/domReady!"], function(dom, string){ dom.byId("someNode").innerHTML = string.trim(" I Like Trim Strings "); });
<script> dojo.require("dijit.form.Button"); myOnClick = function(evt){ console.log("I was clicked"); }; dojo.connect(dojo.byId("button3"), "onclick", myOnClick); </script> <body> <div> <button id="button1" type="button" onclick="myOnClick">Button1</button> <button id="button2" data-dojo-type="dijit.form.Button" type="button" data-dojo-props="onClick: myOnClick">Button2</button> <button id="button3" type="button">Button3</button> <button id="button4" data-dojo-type="dijit.form.Button" type="button"> <span>Button4</span> <script type="dojo/connect" data-dojo-event="onClick"> console.log("I was clicked"); </script> </div> </body>
<script> require([ "dojo/dom", "dojo/on", "dojo/parser", "dijit/registry", "dijit/form/Button", "dojo/domReady!" ], function(dom, on, parser, registry){ var myClick = function(evt){ console.log("I was clicked"); }; parser.parse(); on(dom.byId("button1"), "click", myClick); on(registry.byId("button2"), "click", myClick); }); </script> <body> <div> <button id="button1" type="button">Button1</button> <button id="button2" data-dojo-type="dijit/form/Button" type="button">Button2</button> <button id="button3" data-dojo-type="dijit/form/Button" type="button"> <div>Button4</div> <script type="dojo/on" data-dojo-event="click"> console.log("I was clicked"); </script> </button> </div> </body>
var callback = function(){ // ... }; var handle = dojo.connect(myInstance, "execute", callback); // ... dojo.disconnect(handle);
require(["dojo/aspect"], function(aspect){ var callback = function(){ // ... }; var handle = aspect.after(myInstance, "execute", callback); // ... handle.remove(); });
// To publish a topic dojo.publish("some/topic", [1, 2, 3]); // To subscribe to a topic var handle = dojo.subscribe("some/topic", context, callback); // And to unsubscribe from a topic dojo.unsubscribe(handle);
require(["dojo/topic"], function(topic){ // To publish a topic topic.publish("some/topic", 1, 2, 3); // To subscribe to a topic var handle = topic.subscribe("some/topic", function(arg1, arg2, arg3){ // ... }); // To unsubscribe from a topic handle.remove(); });
function createMyDeferred(){ var myDeferred = new dojo.Deferred(); setTimeout(function(){ myDeferred.callback({ success: true }); }, 1000); return myDeferred; } var deferred = createMyDeferred(); deferred.addCallback(function(data){ console.log("Success: ", data); }); deferred.addErrback(function(err){ console.log("Error: ", err); });
require(["dojo/Deferred"], function(Deferred){ function createMyDeferred(){ var myDeferred = new Deferred(); setTimeout(function(){ myDeferred.resolve({ success: true }); }, 1000); return myDeferred; } var deferred = createMyDeferred(); deferred.then(function(data){ console.log("Success: ", data); }, function(err){ console.log("Error: ", err); }); });
dojo.xhrGet({ url: "something.json", handleAs: "json", load: function(response){ console.log("response:", response); }, error: function(err){ console.log("error:", err); } });
require(["dojo/request"], function(request){ request.get("something.json", { handleAs: "json" }).then(function(response){ console.log("response:", response); }, function(err){ console.log("error:", err); }); });
Module | Description | Contains |
---|---|---|
dojo/dom | Core DOM functions | byId() isDescendant() setSelectable() |
dojo/dom-attr | DOM attribute functions | has() get() set() remove() getNodeProp() |
dojo/dom-class | DOM class functions | contains() add() remove() replace() toggle() |
dojo/dom-construct | DOM construction functions | toDom() place() create() empty() destroy() |
dojo/dom-form | Form handling functions | fieldToObject() toObject() toQuery() toJson() |
dojo/io-query | String processing functions | objectToQuery() queryToObject() |
dojo/dom-geometry | DOM geometry related functions | position() getMarginBox() setMarginBox() getContentBox() setContentSize() getPadExtents() getBorderExtents() getPadBorderExtents() getMarginExtents() isBodyLtr() docScroll() fixIeBiDiScrollLeft() |
dojo/dom-prop | DOM property functions | get() set() |
dojo/dom-style | DOM style functions | getComputedStyle() get() set() |
var node = dojo.byId("someNode"); // Retrieves the value of the "value" DOM attribute var value = dojo.attr(node, "value"); // Sets the value of the "value" DOM attribute dojo.attr(node, "value", "something");
require(["dojo/dom", "dojo/dom-attr"], function(dom, domAttr){ var node = dom.byId("someNode"); // Retrieves the value of the "value" DOM attribute var value = domAttr.get(node, "value"); // Sets the value of the "value" DOM attribute domAttr.set(node, "value", "something"); });
require(["dijit/form/Button", "dojo/domReady!"], function(Button){ var button = new Button({ label: "A label" }, "someNode"); // Sets up a watch on button.label var handle = button.watch("label", function(attr, oldValue, newValue){ console.log("button." + attr + " changed from '" + oldValue + "' to '" + newValue + "'"); }); // Gets the current label var label = button.get("label"); console.log("button's current label: " + label); // This changes the value and should call the watch button.set("label", "A different label"); // This will stop watching button.label handle.unwatch(); button.set("label", "Even more different"); });
require(["dijit/form/Button", "dojo/domReady!"], function(Button){ var button = new Button({ label: "Click Me!" }, "someNode"); // Sets the event handling for the button button.on("click", function(e){ console.log("I was clicked!", e); }); });
require(["dojo/parser", "dojo/domReady!"], function(parser){ parser.parse(); });
<button data-dojo-type="dijit/form/Button" tabIndex=2 data-dojo-props="iconClass: 'checkmark'">OK</button>
<button data-dojo-type="dijit/form/Button" type="button"> <span>Click</span> <script type="dojo/on" data-dojo-event="click" data-dojo-args="e"> console.log("I was clicked!", e); this.set("label", "Clicked!"); </script> <script type="dojo/watch" data-dojo-prop="label" data-dojo-args="prop, oldValue, newValue"> console.log("button: " + prop + " changed from '" + oldValue + "' to '" + newValue + "'"); </script> </button>