脚本没有在templateurl中运行

这是我的角度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文件:

     alert("stop");    hi how are you   

这是我的索引文件:

             

现在,当我尝试运行它

 hi how are you 

正在进入产出。 但警报窗口不会弹出我错在哪里?

问题是当使用innerHTML注入时,浏览器不会自动执行script标记(在templateUrl情况下会发生什么)。 通常,这些标签以编程方式( eval )进行评估。 jQuery做到了,但jqLit​​e(类似于Angular的内部jQuery实现)却没有。

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

   

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

 hi how are you  

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

在partials html页面(test.html)中,无需编写doctype,head和body标签。 只需编写您的html元素和脚本。 它应该工作。