脚本没有在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做到了,但jqLite(类似于Angular的内部jQuery实现)却没有。
在您的情况下,修复很简单, 在角度之前移动jquery脚本标记,然后Angular将使用jQuery进行DOM操作:
此外,您需要清理test.html
模板,只留下正文内容。 这是test.html
外观:
hi how are you
最后,我不知道为什么你需要在部分模板中包含脚本标签,但在大多数情况下这是个坏主意,并且有更好的方法。
在partials html页面(test.html)中,无需编写doctype,head和body标签。 只需编写您的html元素和脚本。 它应该工作。