在 Angular 中导航时第三方库不工作
Third party Library is not working when navigating in Angular
我添加了一些第 3 方库。(Bootstrap、Jquery 和 boot-strap-select (http://silviomoreto.github.io/bootstrap-select/))
当我浏览页面时 "boot-strap-select" 不工作。
但是当我刷新页面时它起作用了。
但我想知道 bootstrap 在没有刷新的情况下是如何工作的。
我使用 npm 安装了库并在 angular-cli.json
中定义
"styles": [
"styles.css",
"../node_modules/bootstrap/dist/css/bootstrap.min.css",
"../node_modules/bootstrap-select/dist/css/bootstrap-select.css"
],
"scripts": [
"../node_modules/jquery/dist/jquery.min.js",
"../node_modules/bootstrap/dist/js/bootstrap.min.js",
"../node_modules/bootstrap-select/dist/js/bootstrap-select.js"
]
我试图在 DOM 中重新创建脚本元素,但它刷新了页面(下面提到的链接)。
https://github.com/angular/angular-cli/issues/4619
我想在导航时加载第三方库而不刷新页面。
源代码:
RepoLink
您需要了解的是,JQuery 和 Angular 放在一起并不是一个很好的做法。但是如果你坚持使用像你提到的 select 库这样的 jquery 插件,那么最好的办法是在 angular.[=11= 中使用该库编写一个指令]
然而在这种情况下,可以提供更简单的解决方案来实现您的要求,但这不是最佳实施方式。最好的实现是编写一个通用指令。
为什么您的 select 插件不能用于路线导航和页面刷新,原因很简单。当页面刷新时,您包含的 select 库会运行所有可用的 dom 元素并应用必要的执行以使 select 正常工作。但是,当您使用 angular 路由器离开它时,新呈现的页面不会经过上述过程。因此 select 将不起作用。
最简单的解决方案是在您的 school.component.ts 中实现生命周期钩子接口 AfterViewInit 并在函数的实现中添加这行代码。
$('.selectpicker').selectpicker({
style: 'btn-info',
size: 4
});
应该这样做
我添加了一些第 3 方库。(Bootstrap、Jquery 和 boot-strap-select (http://silviomoreto.github.io/bootstrap-select/))
当我浏览页面时 "boot-strap-select" 不工作。 但是当我刷新页面时它起作用了。 但我想知道 bootstrap 在没有刷新的情况下是如何工作的。
我使用 npm 安装了库并在 angular-cli.json
中定义 "styles": [
"styles.css",
"../node_modules/bootstrap/dist/css/bootstrap.min.css",
"../node_modules/bootstrap-select/dist/css/bootstrap-select.css"
],
"scripts": [
"../node_modules/jquery/dist/jquery.min.js",
"../node_modules/bootstrap/dist/js/bootstrap.min.js",
"../node_modules/bootstrap-select/dist/js/bootstrap-select.js"
]
我试图在 DOM 中重新创建脚本元素,但它刷新了页面(下面提到的链接)。
https://github.com/angular/angular-cli/issues/4619
我想在导航时加载第三方库而不刷新页面。
源代码: RepoLink
您需要了解的是,JQuery 和 Angular 放在一起并不是一个很好的做法。但是如果你坚持使用像你提到的 select 库这样的 jquery 插件,那么最好的办法是在 angular.[=11= 中使用该库编写一个指令]
然而在这种情况下,可以提供更简单的解决方案来实现您的要求,但这不是最佳实施方式。最好的实现是编写一个通用指令。
为什么您的 select 插件不能用于路线导航和页面刷新,原因很简单。当页面刷新时,您包含的 select 库会运行所有可用的 dom 元素并应用必要的执行以使 select 正常工作。但是,当您使用 angular 路由器离开它时,新呈现的页面不会经过上述过程。因此 select 将不起作用。
最简单的解决方案是在您的 school.component.ts 中实现生命周期钩子接口 AfterViewInit 并在函数的实现中添加这行代码。
$('.selectpicker').selectpicker({
style: 'btn-info',
size: 4
});
应该这样做