Maison > Questions et réponses > le corps du texte
Après avoir effectué quelques opérations sur la page, un morceau de code html sera inséré
Comment compiler ce html pour que les événements et variables qui y sont liés prennent effet~
PHP中文网2017-05-15 16:53:11
Pour des raisons de sécurité, les événements d'Angular dans le code HTML que nous avons inséré et le modèle ng lié ne fonctionneront pas.
Si vous voulez que cela fonctionne, vous devez utiliser le service $compile d'Angular
J'utilise généralement une directive lors du traitement
javascript
angular.module(...).directive('jxbBindCompiledHtml', function ($compile) { 'use strict'; return { template: ' <p></p> ', scope: { rawHtml: '=jxbBindCompiledHtml' }, link: function (scope, elem, attrs) { scope.$watch('rawHtml', function (value) { if (!value) { return; } // we want to use the scope OUTSIDE of this directive // (which itself is an isolate scope). var newElem = $compile($.parseHTML(value))(scope.$parent); elem.contents().remove(); elem.append(newElem); }); } }; });
html
html
<p jxb-bind-compiled-html="htmlvariable"> </p>
htmlvariable est la variable de code html qui doit être insérée
迷茫2017-05-15 16:53:11
http://stackoverflow.com/questions/11771513/angularjs-jquery-how-to-get-dynamic-content-working-in-angularjs
世界只因有你2017-05-15 16:53:11
<!DOCTYPE HTML>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<title>angular编译插入到dom的元素</title>
</head>
<body ng-controller="appCtrl">
<!-- javascript
================================================== -->
<script src="http://cdn.staticfile.org/jquery/2.1.0/jquery.min.js" type="text/javascript"></script>
<script src="http://cdn.staticfile.org/angular.js/1.2.0rc3/angular.min.js" type="text/javascript"></script>
<script type="text/javascript">
var app = angular.module('app', []);
app.controller('appCtrl', function ($scope, $compile) {
$scope.arrs = [1,2,3,4,5,"成", "功", "编", "译"];
var html = '<h1 ng-repeat="arr in arrs">{{ arr }}</h1>';
// 编译html
$html = $compile(html)($scope);
// 插入到dom
$('body').before($html);
});
angular.bootstrap(document, ['app']);
</script>
</body>
</html>
J'ai écrit un exemple, comme ci-dessus.