【发布时间】:2016-01-09 21:49:42
【问题描述】:
我正在使用 Angular 2 构建我的 Web 应用程序。当我尝试在图像或按钮上放置工具提示或弹出框时,我得到的是 default-looking tooltip 而不是引导程序。
我已经尝试了basic W3Schools examples 并按照所示进行了所有操作,但它不起作用。
我相信我的问题在于 bootstrap.js 或 jQuery 的正确导入,但其他引导项(如按钮等)确实可以正常工作。
(我使用nodejs安装必要的文件/依赖项->npm installnpm install bootstrapnpm install jquery)
index.html
<html>
<head>
<base href="/"><!--Without this tag, the browser may not be be able to load resources (images, css, scripts) when "deep linking" into the app. Bad things could happen when someone pastes an application link into the browser's address bar or clicks such a link in an email link. -->
<title>Factory</title>
<link type="text/css" rel="stylesheet" href="/css/styles.css">
<script src="node_modules/angular2/bundles/angular2-polyfills.js"></script>
<script src="node_modules/systemjs/dist/system.src.js"></script>
<script src="node_modules/rxjs/bundles/Rx.js"></script>
<script src="node_modules/angular2/bundles/angular2.dev.js"></script>
<script src="node_modules/angular2/bundles/router.dev.js"></script>
<script src="/node_modules/angular2/bundles/http.dev.js"></script>
<!--<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">-->
<!--<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>-->
<!--<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>-->
<!--<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" />-->
<!-- stackoverflow suggested settings -->
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script>
System.config({
packages: {
app: {
format: 'register',
defaultExtension: 'js'
}
}
});
System.import('app/boot')
.then(null, console.error.bind(console));
</script>
</head>
<body>
<my-app></my-app>
</body>
</html>
带有工具提示的页面(.ts)
import {Component} from "angular2/core";
import ... from ...;
import ... from ...;
...
@Component({
template: `
<div *ngIf="hall" class="container">
<h2>Detail van hal <small>{{hall.name}}</small></h2>
<a href="#" data-toggle="tooltip" title="Hooray!">Hover over me</a>
<div class="container">
<div class="hall-box-single">
<div class="hall-box"
[style.width]="hall.areaWidth*4"
[style.height]="hall.areaHeight*4">
<div class="image-container">
<div *ngFor="#item of hall.items">
<a data-toggle="tooltip" title="Popover title">
<img [src]="item.image"
[style.left]="item.posX"
[style.top]="item.posY"/>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function(){
$('[data-toggle="tooltip"]').tooltip();
});
</script>
`})
export class HallDetailComponent implements OnInit {
...
constructor(...) {
...
}
ngOnInit() {
...
(<any>$('[data-toggle="tooltip"]')).tooltip();
$('[data-toggle="tooltip"]').tooltip();
}
}
!编辑!
添加了用户的建议以及running webpage source 的摘录。
【问题讨论】:
-
我认为您的
<script>...</script>中缺少$('[data-toggle="tooltip"]').tooltip();。请参阅getbootstrap.com/javascript/#callout-tooltip-opt-in 了解更多信息。 -
@adilapapaya 我以前试过,但工具提示和弹出框都不能正常工作。在第二个代码提取中,您可以在底部看到
$('[data-toggle="popover"]').popover(); -
如果你使用 ng-tooltip 或 ng-popover 等组件而不使用 jquery 会更好
标签: javascript node.js twitter-bootstrap-3 tooltip angular