以前,我曾经在加载生成的 URL 时将$sce.trustAsHtml(aString)
字符串(例如,<html>...</html>
)注入模板以显示图形:<div ng-bind-html="content"></div>
.state('urls', {
url: '/urls/{id}',
template: '<div ng-bind-html="content"></div>',
controller: 'UrlCtrl',
resolve: {
url: ['$stateParams', 'urls', function ($stateParams, urls) {
return urls.get($stateParams.id);
}]
}
})
app.controller('UrlCtrl', ['$sce', '$scope', 'url', function($sce, $scope, url) {
$scope.content = $sce.trustAsHtml(url.content);
}]);
现在,用于生成图形的 html 包含对其他文件的引用,例如<script src="script.js"></script>
. 所以我需要一个文件文件夹(.html
, .css
, .js
)来绘制图表。我可以将整个文件夹放在我的服务器中,但问题是如何将这些文件注入到模板中。
我试过了templateUrl: 'http://localhost:3000/tmp/ZPBSytN5GpOwQN51AAAD/index.html'
,localhost:3000/#/urls/58b8c55b5d18ed6163324fb4
在浏览器中加载确实会加载 html 页面。但是,未加载,控制台日志中显示script.js
错误。Failed to load resource: the server responded with a status of 404 (Not Found)
有谁知道如何修改这个?
否则,有没有其他方法可以说src=http://localhost:3000/tmp/ZPBSytN5GpOwQN51AAAD/index.html
(比如 in iframe
)?然后,<script src="script.js"></script>
inindex.html
就会知道它指的script.js
是同一个文件夹中的。
编辑 1:在@Icycool 的评论之后,我更改为templateUrl: '/htmls/test.html'
, 并test.html
包含<div ng-include="'http://localhost:3000/tmp/ZPBSytN5GpOwQN51AAAD/index.html'"></div>
。测试显示它确实加载了test.html
并且index.html
,但不是script.js
:GET http://localhost:3000/script.js?_=1488543470023 404 (Not Found)
。
编辑 2:我为测试目的创建了两个文件:index.html和script.js。正如解释的那样,这是一个plunker,既不工作template
也不templateUrl
工作......