如何使用iconClass等选项动态创建dojo按钮

时间:2016-04-25 00:24:22

标签: dojo

我想动态创建一个dojo按钮,我有使用iconClass等选项的问题。

以下是我如何创建按钮

<td valign="middle" align="
  <button data-dojo-type="dijit/form/Button" data-dojo-props="iconClass:'icon_btn_add', showLabel: false" type="button" onClick='require(["RouteView.js"], function( s ) { s.cb_click_btn_add(1); })' id="id_btn_add_0" 
</td>

我试过了

btn = new Button({
   "data-dojo-props": "iconClass:icon_btn_add, showLabel: false",
   "onClick": "require(['RouteView.js'], function( s ) {
      s.cb_click_btn_add("+(n)+
      "id": "id_btn_add_"+n,
      "disabled": "true"
   }, id_td3);

和此:

domConstruct.create("button", { 
      "data-dojo-type": "dijit/form/Button",
      "data-dojo-props": "iconClass:icon_btn_add, showLabel: false",
      "type": "button",
      "onClick": "require(['RouteView.js'], function( s ) { s.cb_click_btn_add("+(n+1)+"); })",
      "id": "xid_btn_add_"+n,
      "disabled": "true"
    }, id_td3, "last");

不考虑“data-dojo-props”属性。

如何动态创建dojo Button并使用iconClass?

1 个答案:

答案 0 :(得分:0)

我假设你已经通过HTML delcaration方法创建了Dojo小部件。因此,通过HTML中的data-dojo-type属性声明按钮,如:

<button id="an_id_for_your_button" data-dojo-type="dijit/form/Button" data-dojo-props="iconClass:'icon_btn_add', showLabel: false"></button>

Dojo将为您创建按钮,并在其注册表中记录对完全创建的按钮小部件的引用,其ID与原始按钮相同。你可以像这样得到它的引用:

   require([ ..., "dijit/registry", ...], function(..., registry, ...) {
      var btn = registry.byId("id_btn_add_0");
      btn.set("onClick", function(e) {...});

      // Although once you are in JavaScript realm consider using "on" like
      btn.on("click", function(e) {...});
   }); 

注意“registry.byId()”返回的对象与“dom.byId”返回的DOM节点不同。有关按钮的更多信息,请访问:http://dojotoolkit.org/reference-guide/1.10/dijit/form/Button.html

考虑到最好避免在HTML标记中声明事件处理程序(特别是使用Dojo)。 HTML声明的事件处理程序强制处理程序处于全局范围,控制“this”范围可能很棘手。