Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向ArcGIS Web Builder中的小部件添加自定义库_Javascript_Jquery_Arcgis Js Api - Fatal编程技术网

Javascript 向ArcGIS Web Builder中的小部件添加自定义库

Javascript 向ArcGIS Web Builder中的小部件添加自定义库,javascript,jquery,arcgis-js-api,Javascript,Jquery,Arcgis Js Api,我正在尝试将jquery和jquery-modal()的本地版本添加到我的小部件和小部件中,因为它只在小部件中使用 我尝试在我的widgets根文件夹(widget.js/html所在的位置)中创建一个名为“extraLibs”的文件夹,并在代码的define([])和function()部分的widget.js中引用它,但我做得不正确,因为它返回了一个“jQuery未定义”错误,因此我认为问题在于如何在“extraLibs”中声明.js文件文件夹 然后我转到并获得了CDN链接,下载了这两个.j

我正在尝试将jquery和jquery-modal()的本地版本添加到我的小部件和小部件中,因为它只在小部件中使用

我尝试在我的widgets根文件夹(widget.js/html所在的位置)中创建一个名为“extraLibs”的文件夹,并在代码的define([])和function()部分的widget.js中引用它,但我做得不正确,因为它返回了一个“jQuery未定义”错误,因此我认为问题在于如何在“extraLibs”中声明.js文件文件夹

然后我转到并获得了CDN链接,下载了这两个.js文件,将它们重命名为jQuery.js和jQueryModal.js,并将它们放在“extraLibs”文件夹中

然后我这样宣布:

define([... './extraLibs/jQuery', './extraLibs/jQueryModal'],
function(... jQuery, jQueryModal){
//code goes here
});
单击打开的小部件时,它会在控制台中返回“jQuery未定义”错误

我试过这么做,但运气不好


向窗口小部件添加外部lib的正确方法是什么?

如果您使用的是arcgis javascript api,因此使用dojo,那么在包含dojo api之前先设置dojoConfig对象

<script type='text/javascript'>
var dojoConfig = {
aliases [
['jQuery', 'extraLibs/jquery/jquery.js'],
['jQueryModal', 'extraLibs/jquery-modal/jquery-modal.js']
]
}
</script>
<script src="https://js.arcgis.com/3.28/"></script>

通过执行以下操作,我能够在小部件级别成功加载jQuery:

define([... 'jimu/loaderplugins/jquery-loader!https://code.jquery.com/jquery-3.4.1.min.js'],
function(...){
//code goes here
});
至于jquery模式模块,我通过将其代码移到widget.js中,将其直接嵌入到post create函数中。

Arcgis Web AppBuilder(WAB)在init.js文件中定义了dojoconfig变量。如果仔细观察,您会发现其中定义了一个“libs”包:

...
,{
  name: "libs",
  location: window.path + "libs"
},
...
因此,您可以将外部库放在libs文件夹中(对于id为1的应用程序,为wab/server/apps/1/libs/),然后使用以下方法引用该库:

//File: MyWidget.js
define([
'libs/JQuery', 
'libs/lib2',
'libs/lib3'
],function(jQuery, Lib2, Lib3){
 //...
});
我没有测试这段代码,但从WAB默认窗口小部件判断,这似乎是实现这一点的预期方法


您可以在Web AppBuilder上找到更多很棒的提示。

这个dojoConfig会去哪里?在小部件的根目录中?在widget.html中?我还有另一个问题:.js文件需要放在单独的文件夹中吗?在包含arcgis库之前,您需要在主html文件的脚本标记中包含dojoConfig。js文件不需要特别放在任何地方。我正在尝试向应用程序内的小部件添加一个库,而不让库与WAB中的应用程序的其余部分混淆。我只希望小部件具有此功能。我试着按照这个思路去做:没有运气。它返回脚本错误。你应该确保你的路径是正确的。Dojo加载器可能不考虑根,你认为根是什么。
//File: MyWidget.js
define([
'libs/JQuery', 
'libs/lib2',
'libs/lib3'
],function(jQuery, Lib2, Lib3){
 //...
});