通过 dojo 加载自定义 Typescript class 无效
Loading in a custom Typescript class through dojo not working
我有一个自定义 class,我想开始使用 Dojo 加载程序。我看起来很接近,但是注入的东西似乎有问题。
我的 dojoConfig 指向正确的脚本,这工作正常。如果打字稿文件包含 JUST 语句,它会起作用,它会触发它包含的任何内容。
var dojoConfig = {
packages: [
{ name: "Viewer", location: "/scripts", main: "Viewer" }
],
parseOnLoad: false
};
这是我引入自定义 class 的代码。虽然我说如果 typescript 只是语句它工作正常,但当 typescript 是 class 时,我调用构造函数的行不会出错,但它也不起作用。当我设置一个断点并检查查看器变量时,它有一些与 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);
}
这是上下文的打字稿class...
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
它最终变得小得可笑。我不知道需要的字符串需要与将它们引入的函数参数的顺序相同。所以在这个例子中,domReady 将绑定到 Viewer。一旦我将 Viewer require 移动到 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);
}
我有一个自定义 class,我想开始使用 Dojo 加载程序。我看起来很接近,但是注入的东西似乎有问题。
我的 dojoConfig 指向正确的脚本,这工作正常。如果打字稿文件包含 JUST 语句,它会起作用,它会触发它包含的任何内容。
var dojoConfig = {
packages: [
{ name: "Viewer", location: "/scripts", main: "Viewer" }
],
parseOnLoad: false
};
这是我引入自定义 class 的代码。虽然我说如果 typescript 只是语句它工作正常,但当 typescript 是 class 时,我调用构造函数的行不会出错,但它也不起作用。当我设置一个断点并检查查看器变量时,它有一些与 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);
}
这是上下文的打字稿class...
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
它最终变得小得可笑。我不知道需要的字符串需要与将它们引入的函数参数的顺序相同。所以在这个例子中,domReady 将绑定到 Viewer。一旦我将 Viewer require 移动到 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);
}