Faça uma página da web com uma pasta de arquivos externos
Anteriormente, Eu usei$sce.trustAsHtml(aString)
injetar uma string (por exemplo,<html>...</html>
) para um modelo<div ng-bind-html="content"></div>
para exibir um gráfico ao carregar um URL gerado:
.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);
}]);
Agora, o html para gerar um gráfico contém referências a outros arquivos, por exemplo,<script src="script.js"></script>
. Então, eu precisouma pasta de arquivos (.html
, .css
, .js
) para desenhar um gráfico. Posso colocar a pasta inteira no meu servidor, mas o problema écomo injetar esses arquivos no modelo.
eu tenteitemplateUrl: 'http://localhost:3000/tmp/ZPBSytN5GpOwQN51AAAD/index.html'
, Carregandolocalhost:3000/#/urls/58b8c55b5d18ed6163324fb4
no navegador carrega a página html. Contudo,script.js
NÃO está carregado, um erroFailed to load resource: the server responded with a status of 404 (Not Found)
é mostrado no log do console.
Alguém sabe como alterar isso?
Caso contrário, existem outras maneiras de dizer algo comosrc=http://localhost:3000/tmp/ZPBSytN5GpOwQN51AAAD/index.html
(como emiframe
)? Então,<script src="script.js"></script>
noindex.html
saberá que se refere aoscript.js
na mesma pasta.
Editar 1: Após o comentário de @Icycool, mudei paratemplateUrl: '/htmls/test.html'
etest.html
contém<div ng-include="'http://localhost:3000/tmp/ZPBSytN5GpOwQN51AAAD/index.html'"></div>
. O teste mostrou que ele carregoutest.html
eindex.html
, mas nãoscript.js
: GET http://localhost:3000/script.js?_=1488543470023 404 (Not Found)
.
Edição 2: Criei dois arquivos para fins de teste:index.html escript.js. Aqui está umplunker, nemtemplate
nemtemplateUrl
funciona, como explicado ...