大佬教程收集整理的这篇文章主要介绍了jquery – 将html内容附加到Angular JS中的iframe,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我只是将该html文档加载到我现有的html根目录中,那么所有样式都将被新包含的html doc中定义的样式覆盖.如果我将这个带有iframe的html文档包含在src(< ifram e src =“path / to / doc.html”>)上,那么它可以工作.但是,这个doc.html是一个模板,我需要替换我用自定义标签注释的某些部分.我这样做是通过执行以下代码
$.get('template/template.html',function (templatE) { String.prototype.format = function () { var args = arguments; thiS.Unkeyed_index = 0; return this.replace(/\{(\w*)\}/g,function (match,key) { if (key === '') { key = thiS.Unkeyed_index; thiS.Unkeyed_index++ } if (key == +key) { return args[key] !== 'undefined' ? args[key] : match; } else { for (var i = 0; i < args.length; i++) { if (typeof args[i] === 'object' && typeof args[i][key] !== 'undefined') { return args[i][key]; } } return match; } }.bind(this)); }; var renderedHtml = template.format({Hello: "hey there"}); });
到目前为止这个工作正常.在变量renderedHtml中,我有完整的html文档,占位符正在被替换(在这种情况下,占位符问候语被替换为“嘿那里”.
不,我有以下的html片段
<iframe id="test"></iframe>
我尝试了以下代码:
var elem = document.createElement('div'); elem.innerHTML = renderedHtml; document.getElementById('test').appendChild(elem); $compile(elem)($scopE);
不幸的是,视图没有任何变化.但是,如果我在document.body上调用appendChild(elem),那么它可以工作.有谁知道是什么问题?
附:我知道你不应该在角度控制器中进行DOM操作,而不是$compile,你应该用指令来做.但是,如果这种方式有效,那么我很乐意尝试将其重构为指令:).
我能够制作一个带有手表的角度指令,它会更新:iframe.contentDocument.body.innerHTML并得到了我想要的效果.我相信您可以截取此处的内容,并在模板中替换占位符.
如果您在所有这段时间后仍然需要它,下面的预览指令应该可以帮助您.
var app = angular.module('App',[]); app.controller("Cont",function($scopE){ $scope.content = "Hi there!"; }); app.directive("preview",function () { function link(scope,element) { var iframe = document.createElement('iframe'); var element0 = element[0]; element0.appendChild(iframE); var body = iframe.contentDocument.body; scope.$watch('content',function () { body.innerHTML = scope.content; }); } return { link: link,reStrict: 'E',scope: { content: '=' } }; });
input,iframe { border: solid 1px black; width: 100px; } preview iframe { height: 50px; }
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="App" ng-controller="Cont"> <input ng-model="content" type="text" /><br /> <preview content="content"></preview> </div>
以上是大佬教程为你收集整理的jquery – 将html内容附加到Angular JS中的iframe全部内容,希望文章能够帮你解决jquery – 将html内容附加到Angular JS中的iframe所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。