DojoX DTL 入门
2009-11-18 00:00:00 来源:WEB开发网Template 只适用于文本,不能用它来操纵 DOM 节点。但是我们可以用它来产生文本,然后将生成的文本作为某个 DOM 节点的 innerHTML。
HTMLTemplate 是 Template 的扩展,这就是说 HTMLTemplate 不仅支持所有的 Template 操作,还支持直接对 DOM 节点的操作。例如一个节点位于 {% if %} 块标签中,如果 if 标签求值为真,那么这个节点会被添加到 DOM 中,如果 if 标签求值为假,则这个节点将会从 DOM 中移除。
Hello Word
DojoX DTL 的使用与 Django Template Language 类似,首先创建一个 Template 对象,然后创建模板的上下文信息(context,可以理解为变量的集合),最后将 context 作为参数调用 Template 对象的 render 方法输出结果。
清单 2. Hello World dojo.require("dojox.dtl");
dojo.require("dojox.dtl.Context");
var template = new dojox.dtl.Template("Hello {{ place }}!");
var context = new dojox.dtl.Context({
place: "World"
});
alert(template.render(context));
上面的例子首先调用 dojox.dtl.Template 构造函数创建了一个编译好的模板对象 template,该模板定义了对一个变量 place 的引用。这个模板对象可以在以后随时被调用,而不用每次都重新编译。然后调用 dojox.dtl.Context 创建了上下文对象 context,定义了 place 变量。这时调用 template.render(context) 会输出“Hello World”。
前面提到 Template 只适用于文本,但是产生的文本可以作为 DOM 节点的 innerHTML。为了方便这种类型的应用,Template 对象还有一个 update 方法,用来将模板输出的文本作为一个或多个节点的 innerHTML。update 方法有两个参数,第一个是要更新的节点引用、节点 ID 或是通过 dojo.query 返回的节点列表,第二个参数类型是对象或是 URL,作为模板的上下文信息。