javascript - Angular TS 导入的脚本文件不起作用
问题描述
我正在尝试通过做和阅读来学习 Angular Typescript。
我正在尝试将现成的 HTML 引导主题集成到 Angular 项目中。
整合是成功的。但我觉得在架构方面这是错误的。
我的 Angular.json 文件的样式和脚本标签是 ->
"assets": [
"src/favicon.ico",
"src/assets"
],
"styles": [
"src/assets/css/styles.css",
"src/styles.scss"
],
"scripts": [
]
index.html 文件的主体标签 ->
<body id="page-top">
<app-root></app-root>
<nav class="navbar navbar-expand-lg navbar-dark fixed-top" id="mainNav">
... </nav>
<header class="masthead">
...
</header>
<section class="page-section" id="services">
...
</section>
<section class="page-section" id="about">
...
</section>
........ some more sections .........
<script src="assets/js/jquery.min.js"></script>
<script src="assets/js/bootstrap.bundle.min.js"></script>
<script src="assets/js/jquery.easing.min.js"></script>
<script src="assets/js/scripts.js"></script>
</body>
为了使主题正常工作,我必须将所有脚本和 Html 内容添加到一个文件中。作为本例,它是 index.html。我必须在 body 标记的末尾导入脚本文件。我将 CSS 文件添加到 Angular.json,它们运行良好。
我觉得这是不对的。我应该将 Html 分成组件,并且我应该保持 index.html 干净。我必须从 angular.json 导入 js 文件。
一旦我这样做,这个错误就会在控制台中弹出->
现在我的 Angular.json 样式和脚本标签是 ->
"assets": [
"src/favicon.ico",
"src/assets"
],
"styles": [
"src/assets/css/styles.css",
"src/styles.scss"
],
"scripts": [
"src/assets/js/jquery.min.js",
"src/assets/js/bootstrap.bundle.min.js",
"src/assets/js/jquery.easing.min.js"
"src/assets/js/scripts.js"
]
index.html 正文标签 ->
<body id="page-top">
<app-root></app-root>
</body>
我将所有 HTML 移动到一个组件并更新路由
const routes: Routes = [
{ path: "", component: LandingPageComponent }
];
我认为错误是因为没有正确加载脚本文件。
jquery.easing.min.js 也不起作用(这个文件负责平滑滚动动画)。
这是 scripts.js 文件
(function ($) {
"use strict"; // Start of use strict
// Smooth scrolling using jQuery easing
$('a.js-scroll-trigger[href*="#"]:not([href="#"])').click(function () {
if (
location.pathname.replace(/^\//, "") ==
this.pathname.replace(/^\//, "") &&
location.hostname == this.hostname
) {
var target = $(this.hash);
target = target.length
? target
: $("[name=" + this.hash.slice(1) + "]");
if (target.length) {
$("html, body").animate(
{
scrollTop: target.offset().top - 72,
},
1000,
"easeInOutExpo"
);
return false;
}
}
});
// Closes responsive menu when a scroll trigger link is clicked
$(".js-scroll-trigger").click(function () {
$(".navbar-collapse").collapse("hide");
});
// Activate scrollspy to add active class to navbar items on scroll
$("body").scrollspy({
target: "#mainNav",
offset: 74,
});
// Collapse Navbar
var navbarCollapse = function () {
if ($("#mainNav").offset().top > 100) {
$("#mainNav").addClass("navbar-shrink");
} else {
$("#mainNav").removeClass("navbar-shrink");
}
};
// Collapse now if page is not at top
navbarCollapse();
// Collapse the navbar when page is scrolled
$(window).scroll(navbarCollapse);
})(jQuery); // End of use strict
正如我在图片中展示的
if ($("#mainNav").offset().top > 100)
这部分没有执行。
我的问题是我需要以适当的方式将此主题移动到 Angular 项目中。
请帮忙。
谢谢你。
解决方案
推荐阅读
- swift - 如何将从 Firestore 检索到的数据传递到 UICollectionViewCell
- ns2 - 我如何解决这个问题无定形/amorphous.cc:89:15: 错误: 'rqueue' 没有在这个范围内声明
- dialogflow-es - 如何在对话框流内联编辑器实现中使用当前位置?
- c# - 如何使用epplus隐藏一列的网格线
- python - 来自 tensorflow.core.example 的 example_pb2 适用于 python 2,但不适用于 python 3
- python - 如何以交替的反向和字母顺序打印字母?
- php - PHP - 如何使用 php curl 而不是表单提交来发送发布请求,然后重定向页面?
- node.js - 我的 npm install -g react-native-cli 不工作
- c# - 启用后如何选择() NumericUpDown?
- selenium-webdriver - 在我的测试脚本中,它必须单击一个按钮,但它使用 Cucumber 单击 selenium webdriver 中的其他按钮