Загрузка в пользовательский класс дескриптора через dojo не работает

У меня есть пользовательский класс, который я бы хотел запустить, используя загрузчик Dojo. Я кажусь близким, но, похоже, проблема в том, что вводится.

Мой dojoConfig указывает на правильный скрипт, это прекрасно работает. Если файл машинописного текста содержит JUST-инструкции, он работает, он запускает все, что он содержит.

var dojoConfig = {
    packages: [
        { name: "Viewer", location: "/scripts", main: "Viewer" }
    ],
    parseOnLoad: false
};

Это код, в который я ввожу пользовательский класс. В то время как я сказал, что это прекрасно работает, если машинописный текст является просто выражением, когда машинописный текст является классом, строка, в которой я вызываю конструктор, не является ошибкой, но она также не работает. Когда я устанавливаю точку прерывания и проверяю переменную viewer, у нее есть несколько связанных с ней свойств arcgis, поэтому это приводит меня к мысли, что что-то не так с инъекцией.

Я требую, чтобы он был построен, потому что мне нужно передать переменные при запуске. В противном случае это действительно не проблема.

        require([
            "esri/map",
            "esri/dijit/ElevationProfile",
            ...
            "dojo/domReady!",
            "Viewer"
        ], function(Map, ElevationsProfileWidget, Viewer) {
            Loader(Map, ElevationsProfileWidget, Viewer);
        });

        function Loader(Map, ElevationsProfileWidget, Viewer) {
            ...
            var viewer = new Viewer(false, false);
        }

Это класс типов для контекста ...

import TopNavToolbar = require("./TopNavToolbar");
import IdentifyTool = require("./IdentifyTool");

class Viewer
{
    topToolbar: TopNavToolbar;

    constructor(public AddMeasure: boolean, public AddIdentify: boolean) {

        console.log("constructed");
    }
}
export = Viewer;

И это создает JS, если это необходимо

define(["require", "exports", "./TopNavToolbar", "./IdentifyTool"], function (require, exports, TopNavToolbar, IdentifyTool) {
    "use strict";
    var Viewer = (function () {
        function Viewer(AddMeasure, AddIdentify) {
            this.AddMeasure = AddMeasure;
            this.AddIdentify = AddIdentify;
            this.topToolbar = new TopNavToolbar('ulToolbar');
            console.log("constructed");
        }
        return Viewer;
    }());
    return Viewer;
});
//# sourceMappingURL=Viewer.js.map

javascript,typescript,dojo,requirejs,arcgis-js-api,

0

Ответов: 1


1 принят

В итоге это было что-то веселое. Я не знал, что требуемые строки должны быть в том же порядке, что и параметры функции, которые их приводят. Поэтому в этом примере domReady будет привязан к Viewer. Как только я переместил Viewer, нужно прямо под ElevationProfileWidget, все работало как ожидалось

require([
            "esri/map",
            "esri/dijit/ElevationProfile",
            "Viewer",
            "dojo/domReady!" 
        ], function(Map, ElevationsProfileWidget, Viewer) {
            Loader(Map, ElevationsProfileWidget, Viewer);
        });

        function Loader(Map, ElevationsProfileWidget, Viewer) {
            ...
            var viewer = new Viewer(false, false);
        }
JavaScript, машинопись, додзё, requirejs, ArcGIS-JS-апи,
Похожие вопросы