【发布时间】:2019-08-20 03:12:03
【问题描述】:
我正在使用 Typescript 创建一个插件,它为 Header 创建一个 DOM 并将其附加到页面。本项目使用 JQuery 进行 DOM 操作。我想将配置选项从 HTML 页面传递给插件。为此,我使用自定义函数扩展 JQuery 并在其中传递选项。
但问题是当我加载那个 HTML 页面时,我得到一个错误:“$(...).createCentralHeader is not a function”。
这是我的 Index.html 文件:
<!DOCTYPE html>
<html lang="en">
<body class="siteheader-body">
<div class="cep-Header"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="./dist/cep_HeaderCore.js"></script>
<script>
$('cep-Header').createCentralHeader({
headerUrl: "Hello World!!"
});
</script>
</body>
</html>
这是我的 main.ts 文件:
import * as $ from "jquery";
$.fn.createCentralHeader = function(this: JQuery, options?: HeaderOptions) {
const settings: HeaderOptions = {
headerUrl: options.headerUrl
};
alert(settings.headerUrl);
};
这是我的 central-header.d.ts :
interface HeaderOptions {
headerUrl?: string;
}
interface JQuery {
createCentralHeader(options?: HeaderOptions);
}
我正在使用 webpack,它使用 ts-loader 转换 TS 并将我的插件捆绑到 index.html 中引用的文件 cep_HeaderCore.js 中。
这里要注意的更重要的一点是,如果我从插件中调用 createCentralHeader,它会按预期工作。例如:
import * as $ from "jquery";
$.fn.createCentralHeader = function(this: JQuery, options?: HeaderOptions) {
const settings: HeaderOptions = {
headerUrl: options.headerUrl
};
alert(settings.headerUrl);
};
$("cep-Header").createCentralHeader({
headerUrl: "Hello World!!"
});
这里出了什么问题?
【问题讨论】:
标签: javascript jquery typescript definitelytyped