【问题标题】:How do I create unique IDs in a Dojo widget template?如何在 Dojo 小部件模板中创建唯一 ID?
【发布时间】:2012-06-24 23:51:27
【问题描述】:

我正在编写一个 Dojo 小部件,它向用户页面添加标签和输入框。

labelfor 属性需要 HTML ID 值,但 Dojo 小部件不应包含 ID,以防在同一页面上创建多个实例。

那么,有人对如何解决这些相互冲突的需求有任何建议吗?

【问题讨论】:

    标签: dojo widget


    【解决方案1】:

    开箱即用,如果在构建时配置参数不存在,dijit 注册表设置 WidgetID (this.id):

    constructor: function(args) { args=args || {};
      this.id = args.id || dijit.registry.getUniqueId(this.declaredClass)
    }
    

    模板适用于字符串替换,所以如果你的类中有一个属性,比如 foo,那么将这个 放入模板的方法如下:

    templateString = '<div class="${foo}">';
    

    在您的情况下,模板中某处有一个标签->输入对,它是这样的

    <div><!--domNode-->
       <table>
           <td><label for="${id}-edit-title">Title</label></td>
           <td><input id="${id}-edit-title" type="text" /></td>
       </table>
    </div>
    

    所以

    虽然暂时有点过时,但这是一个很好的起点: http://dojotoolkit.org/documentation/tutorials/1.6/templated/

    继续阅读dojo.Stateful get/set 机制

    终于转向dijit._WidgetsInTemplateMixin

    【讨论】:

    • 只是提醒一下:似乎在模板中引用 ${id} 就是我们需要做的所有事情。在任何小部件的生命周期方法中都没有额外的代码。
    • 如前所述,“开箱即用”:) 第一个代码块是 dijit.widget 将其 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
    相关资源
    最近更新 更多