2016-04-25 94 views
0

我想要动态创建dojo按钮,并且我有问题可以使用iconClass等选项。如何使用选项动态创建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"); 

“数据道场道具” 属性没有考虑到。

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

+0

其实我找到了解决办法:只是使用“iconClass”作为属性。 BTN =新按钮({ “iconClass”: “icon_btn_add”, “showLabel”:假, “的onClick”:“需要([ 'RouteView.js'],(多个)功能{ s.cb_click_btn_add( “+(n)+ ”id“:”id_btn_add _“+ n, ”disabled“:”true“ },id_td3); – Olivier

回答

0

我假设你已经通过HTML delcaration方法创建了Dojo小部件。因此,宣布在HTML通过数据道场-type属性按钮,如:

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

道场将创建一个按钮,你和它的注册表记录与相同的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节点返回由“dom.byId”不同的对象。关于按钮更多信息,可以发现:http://dojotoolkit.org/reference-guide/1.10/dijit/form/Button.html

对于考虑它可以是很好的做法,以避免在HTML标签声明事件处理程序(特别是使用Dojo)。 HTML声明的事件处理程序强制处理程序处于全局范围内,并且控制“this”范围可能会非常棘手。

+0

实际上,我的问题是动态创建** dojo按钮构件会有一堆,也许高达30或40),使用两个属性data-dojo-type和data-dojo-props。即使我使用“new Button”,属性data-dojo-props也会被忽略(但所有其他人都正确使用)。 – Olivier