gpt4 book ai didi

javascript - 脚本未在 templateurl 中运行

转载 作者:行者123 更新时间:2023-11-29 19:23:29 25 4
gpt4 key购买 nike

这是我的 Angular js文件

test.js 文件:

var app = angular.module("angleapp", [])
.controller('MainController', ['$scope', function ($scope) {
$scope.test = "hi all"
}])
.directive('programlisting', function () {
return {
restrict: 'E',
scope: {
},
templateUrl: '/directives/test.html'
};
});

test.html 文件:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">
alert("stop");
</script>
</head>
<body>
hi how are you
</body>
</html>

这是我的索引文件:

 <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>
<script src="/directives/test.js"></script>
</head>
<body data-ng-app="angleapp">
<div class="main" ng-controller="MainController">
<programlisting></programlisting>
</div>
</body>
</html>

现在当我尝试运行它时

hi how are you 

出现在输出中。但是警告窗口不会弹出我哪里出错了?

最佳答案

问题是 script 标签在注入(inject) innerHTML 时不会被浏览器自动执行(在 templateUrl 的情况下会发生什么)。通常,此标记以编程方式评估 (eval)。 jQuery 可以,但 jqLit​​e(Angular 的内部类 jQuery 实现)没有。

在您的情况下,修复很简单,将 jquery 脚本标记移动到之前 angular,然后 Angular 将使用 jQuery 进行 DOM 操作:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>

此外,您需要清理您的test.html 模板,只留下正文内容。 test.html 应该是这样的:

hi how are you

<script type="text/javascript">
alert("stop");
</script>

最后,我不知道为什么你需要在部分模板中使用脚本标签,但在大多数情况下这是个坏主意,还有更好的方法。

关于javascript - 脚本未在 templateurl 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32048046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com