Dojo - 如何以编程方式修改dojo-props?

时间:2015-05-11 20:49:30

标签: javascript dojo dojox.mobile

我有像这样的ToolBarButton:

<span data-dojo-type="dojox/mobile/ToolBarButton" 
      data-dojo-props="label:'Back', moveTo:'config'" ></span>

您可以看到我将moveTo属性声明为&#39; config&#39;但是我怎么能以编程方式改变它呢?

我想重复使用此按钮但我想调用一个函数来修改moveTo的值。

有点像这样:

<span data-dojo-type="dojox/mobile/ToolBarButton" onclick="modifyMoveTo('somePath')"
      data-dojo-props="label:'Back', moveTo:'config'" ></span>

2 个答案:

答案 0 :(得分:3)

这是模板的一部分吗?如果是这样,你可以给它一个附加点,如

<span data-dojo-type="dojox/mobile/ToolBarButton" 
    data-dojo-attach-point="myButton" 
    data-dojo-props="label:'Back', moveTo:'config'" ></span>

然后通过这样做来改变它:

this.myButton.set("moveTo", "somePath");

如果没有,你可以给它一个id,比如说'myButton&#39;,然后从你的代码中使用dojo的注册表实用程序(dijit / registry),并执行以下操作:< / p>

var btn = registry.byId("myButton"); //This will return the widget
btn.set("moveTo", "somePath");

答案 1 :(得分:1)

data-dojo-props只是一种使用标记设置属性的方法。例如,如果您查看dojox/mobile/ToolbarButton的API文档 ,你会看到很多属性。

另外,如果查看方法摘要,您将看到以下方法:

  

set(name,value)在小部件上设置属性

所以是的,每个小部件都有这个方法,允许你设置你可以在API文档中找到的任何属性。例如:

myToolbarBtn.set('label', 'Back 2');

现在,要获取对要更改的窗口小部件的引用(例如myToolbarBtn),可以使用dijit/registry模块,该模块允许您通过DOM节点ID获取窗口小部件,父节点,....

如果您正在使用modifyMoveTo()之类的全局函数,那么您可以获取event.target属性来检索DOM节点,然后使用:

require(["dijit/registry"], function(registry) {
    var myToolbatBtn = registry.byNode(evt.target);
});

然后您可以通过编程方式访问小部件。或者像理查德所说,你可以使用ID,模板......,