AngularJS中的自定义属性设置器

时间:2013-03-05 01:06:21

标签: angularjs

我有iframe,它的内容应绑定到控制器功能。我试过了

<iframe ng-bind-html-unsafe="selectedMessage.content()"></iframe>

但遗憾的是它似乎不起作用。将内容写入iframe的正确方法是访问iframe DOM元素并调用ifrmElem.contentDocument.write(s)

我该如何做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以通过在属性上设置观察程序,然后在需要时手动更新iframe来实现此目的。

下面的示例使用跨浏览器iframe内容选择。

参见jsFiddle:http://jsfiddle.net/uyLNY/2/

$scope.$watch('data.content', function(oldValue, newValue) {
    var ifrm = $element.find('iframe')[0];
    ifrm = (ifrm.contentWindow) ? ifrm.contentWindow : (ifrm.contentDocument.document) ? ifrm.contentDocument.document : ifrm.contentDocument;       
    ifrm.document.open();
    ifrm.document.write(newValue);
    ifrm.document.close();

});

但值得注意的是,如果你要撰写大量内容,我不确定这一点的表现。

答案 1 :(得分:1)

这是一个plnkr:http://plnkr.co/edit/LG7p1AG7yhVKyLXgMX4Q?p=preview

的Javascript

  $scope.content= "";

  $scope.fillFrame = function(id) {
    document.getElementById(id).contentDocument.write($scope.content);  
  };

HTML

 <strong>Enter some html</strong>
    <br/>
    <textarea ng-model="content"></textarea>
    <button ng-click="fillFrame('frame')">Fill iFrame</button>