Как я могу вывести тег сценария, который хранится в виде строки в моей области, в шаблон AngularJS?
-
21-12-2019 - |
Вопрос
Мне нужно использовать встроенный скрипт в своих шаблонах, но динамически вставлять путь к изображению перед запуском скрипта.
Я написал директиву для создания пути к изображению как переменной области, а затем использую $interpolate
чтобы вставить это в <script>
ярлык.
Ссылка теперь хранится (в виде строки) в $scope.tag
это код, который я хотел бы внедрить и интерпретировать/запустить как тег сценария.
Однако вместо этого тег сценария добавляется в виде строки в мой шаблон, и я не могу понять, какой дополнительный шаг мне нужно предпринять, чтобы фактически вывести строку тега сценария как тег сценария.
Вот шаблон (называемый в директиве templateUrl
):
<div>
{{ tag }}
</div>
Директива:
'use strict';
angular.module('App')
.directive('sslLogo', function($location, $interpolate) {
return {
replace: false,
restrict: 'AE',
templateUrl: '/views/partials/ssl-logo.html',
controller: function($scope, $element, $attrs) {
// Outputs the full base url (http:// ... .com/ )
var base_url = '';
base_url += $location.protocol() + '://';
base_url += $location.host();
if ( $location.port() ) {
base_url += ':' + $location.port();
}
// Add the path to the image asset.
$scope.logo_url = base_url + "/images/static/comodo-wildcardssl.png";
// Interpolate this path into the script tag and then store the script tag to be output to the template.
$scope.tag = $interpolate('<script type="text/javascript">TrustLogo("{{ logo_url }}", "SCCC", "none");</script>', false, true)({ logo_url: $scope.logo_url });
},
link: function(scope, element, attrs) {}
};
});
Для справки: на данный момент $scope.tag
переменная будет содержать строку:
<script type="text/javascript">TrustLogo("http://localhost:9000/images/static/comodo-wildcardssl.png", "SCCC", "none");</script>
Решение
Кажется, что:
...
link: function(scope, element, attrs) {
element.append( scope.tag );
}
...
работает, который использует jQuery для добавления тега сценария к элементу директивы.