gpt4 book ai didi

dojo - dojo中registry.byId和dom.byId的区别?使用 registry.byId 有什么好处?

转载 作者:行者123 更新时间:2023-12-04 02:07:36 24 4
gpt4 key购买 nike

registry.byId 和有什么区别和 dom.byId在道场?使用registry.byId有什么好处? ?

在下面的代码中,我使用 dijit/registrydojo/dom对于我的文本框( #myTextBox3 )和我的文本框节点( #textNode3 )。其中只有两个正在提供结果。

require(["dojo/parser", "dojo/dom", "dijit/registry", "dijit/form/TextBox", "dojo/domReady!"],
function(parser, dom, registry) {

parser.parse();

// Locate the JS object.
var dibiWidget = registry.byId("myTextBox3");
var dobiWidget = dom.byId("myTextBox3");
var dibiDOM = registry.byId("textNode3");
var dobiDOM = dom.byId("textNode3");


dom.byId("textNode3").innerHTML = "registry.byId for widget id returned: " + dibiWidget + "<br>" +
"dom.byId for widget id returned: " + dobiWidget + "<br>" +
"registry.byId for dom id returned: " + dibiDOM + "<br>" +
"dom.byId for dom id returned: " + dobiDOM + "<br>";
});

最佳答案

这些模块有不同的用途。所以使用registry.byId()没有任何优势(或 dom.byId() ),因为它们在用例上有所不同。

dijit/registry::byId()
dijit/registry模块主要用途是检索 小部件 实例。引用 reference guide :

dijit/registry stores a collection of all the dijit widgets within a page. It is commonly used to retrieve a reference to a widget from a related piece of data



dojo/dom::byId()
dojo/dom另一方面,模块只是一个访问 DOM 节点的模块。引用 byId()的信息在 reference guide :

This is a simple alias to document.getElementById, which not only is shorter to write, but fortunately works in all browsers. It turns a domNode reference to some Node byId, or the same node reference if passed a domNode.



这是什么意思?
registry.byId()函数将返回您的小部件的一个实例。这包含来自小部件的 setter/getter 和其他东西。这个模块应该 仅限 用于检索小部件,您无法使用它获取 DOM 节点。
dom.byId()另一方面,函数将返回匹配的 DOM 节点。您只能使用它来检索 DOM 节点。小部件显然也包含 DOM 节点,但您永远不应该直接访问小部件的 DOM 节点,因为它们是小部件内部结构的一部分(并且可能会更改)。

访问小部件时, 总是 使用 registry.byId() .无论如何,它提供了访问大多数 DOM 属性的 API。

你的代码

因此,您的代码在这里演示了 4 种可能性。假设 #myTextBox3是一个小部件(例如类型 dijit/form/TextBox )和 #textNode3是一个 DOM 节点,会发生以下情况:
  • dibiWidget工作因为#myTextBox3是一个小部件。它将返回对该小部件的引用
  • dobiWidget可能工作 ,因为每个小部件后面都有一个具有相同 ID 的 DOM 节点(虽然不是必需的)。但是,就像我刚才解释的那样,它是 不推荐使用它。
  • dibiDom不工作因为没有 ID 为 #textNode3 的小部件.这只是一个简单的 DOM 节点。
  • dobiDom将返回对 DOM 节点的引用并将 工作 .

  • 我也发了个小 JSFiddle来证明这一点。

    关于dojo - dojo中registry.byId和dom.byId的区别?使用 registry.byId 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23376417/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com