【问题标题】:Dojo - how to I programatically modify dojo-props?Dojo - 如何以编程方式修改 dojo-props?
【发布时间】:2015-05-11 20:49:30
【问题描述】:

我有一个这样的 ToolBarButton:

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

您可以看到我已将 moveTo 属性声明为“config”,但如何以编程方式更改它?

我想重用这个按钮,但我想调用一个函数来修改 moveTo 的值。

有点像这样:

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

【问题讨论】:

    标签: javascript dojo dojox.mobile


    【解决方案1】:

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

    <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”,然后从您的代码中,使用 dojo 的注册表实用程序 (dijit/registry),然后执行以下操作:

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

    【讨论】:

      【解决方案2】:

      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);
      });
      

      然后您可以通过编程方式访问小部件。或者像 Richard 所说的,你可以使用 ID、模板……。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多