将依赖项列表放入表单模板的某个位置,例如在dijit/form/Form 的data-config 属性中:
<form
data-dojo-type="dijit.form.Form"
data-config='"deps":["dijit/form/Form", "dijit/form/TextBox", "dijit/form/Button"]'>
<input data-dojo-type="dijit.form.TextBox" data-dojo-props="placeholder:'TextBox'">
<button data-dojo-type="dijit.form.Button">Button</button>
</form>
为dijit/layout/ContentPane设置parseOnLoad:false,加载模板,获取依赖列表,require它们,然后在你的ContentPane的工厂函数parser.parse()containerNode中(看它在行动@ 987654323@):
require([
"dojo/ready",
"dojo/dom",
"dojo/query",
"dojo/on",
"dojo/parser",
"dojo/json",
"dijit/layout/ContentPane",
"dojo/domReady!"
], function(ready, dom, query, on, parser, JSON) {
var template, dijits;
ready(function() {
template = dom.byId("template").textContent;
on.once(dom.byId("loadFormButton"), "click", loadForm);
contentPane1.set("parseOnLoad", false);
contentPane1.on("load", parseForm);
});
function loadForm() {
contentPane1.set("content", template);
}
function parseForm() {
// a node to parse
var node = contentPane1.containerNode;
// obtain a list of dependencies
var config = JSON.parse("{" + query("form", node)[0].dataset.config + "}");
// require (AMD load) dependencies
require(config.deps, function() {
// parse ContentPane content when dependencies are resolved
dijits = parser.parse(node);
console.log(dijits); // an array of instantiated dijits
});
}
});