【问题标题】:Dojo get element type [duplicate]Dojo获取元素类型[重复]
【发布时间】:2014-05-19 14:31:55
【问题描述】:

我想使用 javascript 来获取 dijit 元素类型。例如如果项目是文本框、组合框、过滤选择等。这是我尝试过的,它导致返回未定义。

HTML

<s:textfield type="text" id="name" required="true" data-dojo-type="dijit/form/ValidationTextBox" />

<s:select id="gender" data-dojo-type="dijit/form/FilteringSelect" /> 

Javascript

var genderType = dijit.byId('gender').attr('data-dojo-type');

var name= dijit.byId('name').attr('data-dojo-type');

console.log(genderType);
console.log(name);

结果

undefined
undefined

【问题讨论】:

  • 你能提供jsfiddle吗?
  • 试试这个方法:var yourWidgetType = dojo.filter(dijit.registry._hash, function(widget) { return widget.declaredClass; })
  • @user3241019 它没有返回任何结果
  • 如果尝试使用其 ID 访问您的小部件,您会得到任何结果吗? Here 是 Dojo 文档,通过 dijit 注册表 (v1.9) 为您提供示例
  • @user3241019 我试过 dijit.registry.byId('widgetName') 和 dijit.byId('widgetName') 仍然没有结果

标签: javascript html dojo


【解决方案1】:

获取它们的最佳方法确实是使用 declaredClass 属性,但是,我不确定依赖它是否是一件好事,仅仅是因为它大多没有记录。

在你的情况下是:

require([ "dojo/ready", "dijit/registry" ], function(ready, registry) {
    ready(function() {
        console.log(registry.byId("gender").get("declaredClass")); // Returns dijit.form.FilteringSelect
    });
});

示例:http://jsfiddle.net/6RRUK/

使用data-dojo-type 将不起作用,因为:

  1. 它不是小部件属性,如果您想实现这一点,您应该请求 DOM 属性本身。
  2. Dojo 解析器解析标记时,data-dojo-type 属性通常会消失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多