gpt4 book ai didi

javascript - Dojo 函数参数顺序

转载 作者:行者123 更新时间:2023-11-30 08:50:59 25 4
gpt4 key购买 nike

当使用 dojo 声明一个函数时,参数的顺序似乎是正确的。此函数头导致错误:

require(["dojo/dom",
"dijit/Dialog",
"dijit/form/Form",
"dijit/form/TextBox",
"dijit/form/ValidationTextBox",
"dijit/form/Textarea",
"dijit/form/Button",
"dojox/validate/web",
"dojo/request",
"dojo/domReady!"],
function(dom, Dialog, Form, TextBox, ValidationTextBox, TextArea, Button, request)

request.post 的执行导致未定义的错误。然后我将公园的顺序更改为:

require(["dojo/dom",
"dojo/request",
"dijit/Dialog",
"dijit/form/Form",
"dijit/form/TextBox",
"dijit/form/ValidationTextBox",
"dijit/form/Textarea",
"dijit/form/Button",
"dojox/validate/web",
"dojo/domReady!"],
function(dom, request, Dialog, Form, TextBox, ValidationTextBox, TextArea, Button ){

通过在顺序中更早地移动 dojo/request 和 request,错误消失了。我在另一个具有不同参数的脚本中遇到了同样的问题。是否有一些文档解释了如何订购参数? dojo 元素是否必须在数字元素之前,dojo/domReady 不能承受?

最佳答案

顺序应与您在模块名称数组中维护的顺序相同。这意味着以下内容是正确的:

require(["my/first", "my/second"], function(first, second) {
...
});

但是,当您使用回调中不需要返回值的模块时,应将它们插入最后

require(["my/first", "my/second", "dojo/domReady!"], function(first, second) {

});

如果您不维护该顺序,例如在下一个示例中,那么您将遇到问题,因为参数将包含无效的内容。

require(["my/first", "dojo/domReady!", "my/second"], function(first, second) {
// "second" doesn't work
});

在您的第一个示例中,您在 dojo/request 之前导入了 dojox/validate/web 但在您的回调中您没有 dojox/validate/的参数网页。结果很简单,名称为 request 的参数将包含 dojox/validate/web 而不是 dojo/request 的返回对象。因此,调用 request 对象可能无法正常工作。

所以你需要记住的是,你需要保持正确的顺序并且没有返回值的模块(或者你不需要的返回值)应该被放置最后

如果你不把它们放在最后一个位置,那么你必须指定一个返回值,例如,下一个例子将起作用:

require(["my/first", "dojo/domReady!", "my/second"], function(first, domReady, second) {
...
});

但这是一种内存浪费,因为 domReady 参数不会包含任何有用的数据(至少,如果您不使用它的话)。

关于javascript - Dojo 函数参数顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17900474/

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