角iFrame的方法(Angular iFrame methods)

2019-10-22 05:16发布

我试图让一个角度指令来包装一个iFrame。 由于IE 11不支持srcdoc属性我找了不同的方式来填补的iFrame:

angular
    .module('angularApp')
    .directive('easyframe', easyframe);

function easyframe() {
    return {
        restrict: 'E',
        scope: {content: '='},
        replace: true,
        template: '<iframe id="easyframe" width="100%"></iframe>',
        controller: function ($sce, $scope, $element) {
            $scope.$watch('content', function () {
                var content = $sce.trustAsHtml($scope.content);
                var iframeDocument = $element[0];

                iframeDocument.open('text/html', 'replace');
                iframeDocument.write(content);
                iframeDocument.close();
             });
        }
    };
}

失败的原因是$元素我得到的是不具有开放的方法的角度jQueryLite对象。 我如何获得DOM元素的角方式,因此无需使用querySelector?

Answer 1:

我遇到类似的问题跑,但希望能有被注入的iframe依然被绑定到含有角范围的内容。 我写了一个指令来处理这个问题,它可以在这里找到: http://plnkr.co/edit/KRfAyc5haHyFq7FyCnxg?p=preview

它用于像这样:

<wrap-in-frame frame-template="frame-template.html" frame-selector="div" height="200" style="border-width: 5px; width: 100%;">
  Angular Interpolated Data: {{ data }}
  <div>NgModel Data Binding: <input ng-model="data" type="text" /></div>
</wrap-in-frame>

<div>
  Outside frame binding:
  <input ng-model="data" type="text" />
</div>

并产生如下:

frame-templateframe-selector是可选的。 它们允许加载文件(由指定的frame-template )到框架中和注入内容到框架的元件中,通过指定的frame-selector



文章来源: Angular iFrame methods