2013-06-20 121 views
1

我读通过道场优雅tutorial,并有创建一个名为类的例子:dojo命名类 - 何时使用它们以及如何创建它们?

// Create a new class named "mynamespace.MyClass" 
declare("mynamespace.MyClass", null, { 

    // Custom properties and methods here 

}); 

问:什么时候应该使用名为类和何时应使用匿名类?

“命名mynamespace.MyClass类是现在应用在全球范围内提供”

问:如何在应用程序中创建我的类的实例?

“如果他们将与 道场解析器使用。所有其他类应该忽略className参数命名类应该只被创建。”

问题:这是什么意思?

+3

有趣。我记得在使用AMD加载器时已经阅读过一些你不能使用命名类的东西。这些类名尤其如此。已被dojo解析器用于识别小部件,但由于dojo 1.8也可以直接使用模块名称“my/form/InputWidget”作为data-dojo类型。所以我再也看不到任何用于命名类的用法。 – James

回答

0

什么时候应该使用命名类,什么时候应该使用匿名类?

在使用Dojo 1.8之前,您需要使用第一个区段来提供类名称,该名称既用于在命名空间中定义类,又用于dojoType属性中的dojo解析器(用于声明性标记)。

如何在应用程序中创建我的类的实例?

// First make sure to import/alias the declare module in your application module that will be declaring the new class: 
// define([dojo/_base/declare],function(declare){}){ 

// From 1.8+, you don't need the class name parameter. 
// Supplying the name provides no additional value. 
declare(null, { 
    // Custom properties and methods here 
}); 

官方参考指南页面道场更多信息声明在这里找到:http://dojotoolkit.org/reference-guide/1.9/dojo/_base/declare.html#dojo-base-declare

这是什么意思? 它不再适用于解析器。它曾经是dojo解析器在解析html片段以匹配data-dojo-type =“”这些类名时使用的类名参数。现在,您可以将AMD模块标识符例如。返回小部件的构造函数的模块“dijit/Button”,解析器可以自动加载并实例化小部件,而不使用类名称。

相关问题