使用AngularJS设置WYMeditor的内容
我的网页上有一个WYMeditor实例,我想用AngularJS控制文本的内容。
我尝试了几种方法,但都没有成功:
我们假设:
$scope.Details = 'foo';
并且它根据用户的不同行为而变化。
使用ng-model:
<textarea ng-model="Details" class="wymeditor"></textarea>
不起作用,因为当我修改细节时,实际textarea的内容会发生变化,但它是隐藏的,并且属于WYMeditor的内部iFrame的内容不会更改。
在我的Angular控制器中使用WYMeditor的html()函数:
wym = jQuery.wymeditors(0);
wym.html($scope.Details);
这将返回一个错误消息,引用WYMeditor的html()函数声明。
Error: this._doc is undefined
我使用WYMeditor 0.5,Angular 1.1.5,jQuery 2.0.3和jQuery-migrate 1.2.1(用于WYMeditor与jQuery 2一起工作)。
我想以某种方式在iFrame声明中添加ng-model =“Details”,但我不知道如何做到这一点,似乎有一个更深层次的问题需要解决,就像那样。
谢谢!
WYMeditor需要一些时间来初始化。 最好在postInit
钩子中设置与它的postInit
。
angular.module('myApp')
.directive('wymeditor', ($log, $parse) ->
scope:
ngModel: '='
restrict: 'C'
link: (scope, element, attrs) ->
$log.debug 'Initializing WYMeditor', attrs.wymOptions
options = $parse(attrs.wymOptions)()
options.postInit = (wym) ->
# we need to wait till editor is ready to interact with it
scope.$watch 'ngModel', (newVal, oldVal) ->
$log.debug 'ngModel Changed, refreshing editor....'
wym._html(scope.ngModel)
element.wymeditor( options )
)
然后你用这样的东西来设置WYMeditor:
<textarea
class="wymeditor"
wym-options="{
skin: 'seamless',
iframeHtml: WYMeditor.SKINS.seamless.OPTS.iframeHtml,
logoHtml: ''
}"
ng-model="someVar"
></textarea>
请注意,上述内容不会填充模型。 WYMeditor不提供检测更改的方法。 最可靠的方法是每隔几秒查询一次更改。 取而代之的是textAngular。
链接地址: http://www.djcxy.com/p/15917.html上一篇: Setting WYMeditor's contents with AngularJS
下一篇: How to scale iframe content (embedded using a WYSIWYG editor)?