javascript - AngularJS - 工具提示不起作用
问题描述
这是我第一次尝试AngularJS,我通过W3找到了一个例子。我希望使用它为我将为客户处理的新 Bootstrap 项目创建路由。
问题是它似乎没有加载我正在使用的javascript。我对 javascript 和 DOM 不是很熟悉,所以不确定为什么这不起作用。
为了展示我正在谈论的示例,我删除了所有内容,并使用图像和工具提示进行了尝试。索引页面上的图像可以正常工作,但是在加载测试页面时,工具提示停止工作。我试图通过开发人员工具跟踪是否有错误,但没有任何显示。
索引:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="assets/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="assets/css/custom.css">
<link rel="stylesheet" type="text/css" href="assets/css/font-awesome.min.css">
<script src="assets/js/jquery-3.3.1.min.js"></script>
<script src="assets/js/bootstrap.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular-route.js"></script>
<script>
var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider) {
$routeProvider
.when("/", {
templateUrl : "main.php"
})
.when("/home", {
templateUrl : "main.php"
})
.when("/test", {
templateUrl : "test.php"
})
});
</script>
<script>
$(document).ready(function() {
$('[data-toggle="tooltip"]').tooltip();
});
</script>
</head>
<body ng-app="myApp">
<p><a href="#!home">Main</a> | <a href="#!test">Test</a></p>
<p><img src="http://placehold.it/200x200" class="img-responsive" data-toggle="tooltip" data-placement="top" data-html="true" title="<strong>Test</strong>"></p>
<div ng-view></div>
</body>
</html>
测试:
<p><strong>Test</strong></p>
<p><img src="http://placehold.it/200x200" class="img-responsive" data-toggle="tooltip" data-placement="top" data-html="true" title="<strong>Test</strong>"></p>
工具提示显示在 ng-view DIV 之前的索引上。
工具提示未显示在测试 ng-view 上。
更新
遇到另一个问题,当我尝试重新访问调用 main.php 的 /home 时,它只会加载一个包含最新帖子的空白屏幕,而没有其他任何内容。
主页
关于
回家
也没有显示错误。
解决方案
('[data-toggle="tooltip"]').tooltip();
执行以下操作:搜索所有现有元素并将工具提示附加到它们。从角度来看,这完全没用,因为元素一直在创建和删除。(这就是为什么它不适用于 ng-view 中的工具提示,因为此代码在 ng-view 被角度处理并填充内容之前执行)
这就是为什么在 Angular 中所有 Jquery 插件都应该通过指令来使用。
但是对于角度初学者的真正建议是完全删除 Jquery,因此您无法使用 jquery,并且您被迫以角度方式做事。在 Angular 中有多种替代方法可以用于 jquery 中的各种事物,即工具提示 - 提到 ui.bootstrap 或 angular-material。
推荐阅读
- electron - 如何仅在 Mac 版 Electron 应用程序中使用某些代码行?
- bash - 带有分隔符的 Bash 脚本传递变量
- python - 在 Python3 中将字符串与多个字符串进行比较
- c# - 将实体属性 DB 属性设置为 IsRequired() 和 defaultValue: "('')" 解决方法?
- cmake - 如何为 GCC 覆盖 -nostdinc
- python - 如何修复不满足 biner 约束的 PuLP VRP 模型
- jersey-2.0 - 在 Gradle 中使用带有 Open Liberty 的 Jersey
- swift - 有人可以简单地解释一下 Swift 的应用程序二进制稳定性吗?
- javascript - 如何停止在同一对象上触发“点击”事件
- ios - 两个对象没有相互接触,但是contactTestBetween()返回结果