2013-03-05 3 views
1

У меня есть iframe, и его содержимое должно быть связано с функцией контроллера. Я попробовалПользовательский набор свойств в AngularJS

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

, но, к сожалению, он не работает. Правильный способ записи содержимого в iframe состоял бы в том, чтобы получить доступ к элементу DOM iframe и вызвать ifrmElem.contentDocument.write(s).

Как это сделать?

ответ

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

Вот 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> 
Смежные вопросы