未为ArcGIS服务器映射定义Bootstrap模态要求

kas*_*ock 5 javascript asp.net-mvc arcgis-server twitter-bootstrap-3

如果这很简单,请原谅我,但我无法找到解决问题的方法.

我试图在bootstrap模式中打开ESRI地图.在第一次它没有加载地图(在控制台中我看到错误"需要未定义"),但第二次它工作正常.如果我在一个单独的窗口中打开地图,那么每次都可以正常工作.

我的部分视图如下:

@{
    <link rel="stylesheet" href="https://js.arcgis.com/3.21/dijit/themes/claro/claro.css">
    <link rel="stylesheet" href="https://js.arcgis.com/3.21/esri/css/esri.css">

    <script src="https://js.arcgis.com/3.21/"></script>
    <script>
        var map;

        require([
          "esri/map",
          "dojo/parser",
          "dojo/domReady!"
        ],
        function (
          Map,
          parser
        )
        {
            parser.parse();

            map = new Map("map", {
                basemap: "streets",
                center: [5.79, 50.97], // lon, lat
                zoom: 16,
                slider: false
            });
        });
   </script>
}

<div class="modal-header">
    <a class="close" data-dismiss="modal">&times;</a>
    <h4>DrawProjectLocation</h4>
</div>
<div class="modal-body">
    <div id="mainWindow" data-dojo-type="dijit/layout/BorderContainer"  data-dojo-props="design:'headline', gutters:false" style="width:100%; height:100%;">      
        <div id="map" class="roundedCorners" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'">

        </div>
        <div id="footer" class="roundedCorners" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'bottom'">
            <div id="editorDiv"></div>
        </div>
    </div>
</div>
<div class="modal-footer">
    <span id="info" style="position:absolute; left:15px; bottom:15px; color:#000; z-index:100"></span>
    <button type="submit" class="btn btn-success" id="submitButton">Save</button>
    <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
</div>
Run Code Online (Sandbox Code Playgroud)

我尝试在部分视图中包含require.js但它没有帮助.有人可以告诉我这里出了什么问题.谢谢!!

kas*_*ock 3

最后,我通过在主视图而不是部分视图上添加 ArcGIS js 解决了这个问题。由于RequireJS是异步加载的,因此其他脚本/函数不会等到其完全加载。

另一种解决方法是通过设置 RequireJS 配置来加载引导模式,以确保最初加载所有必需的脚本。示例可以在这里找到