如何在不丢失Flex格式的情况下替换RichTextEditor文本

时间:2017-05-02 23:56:00

标签: actionscript-3 flash flex actionscript rich-text-editor

在我的ActionScript代码中,我使用richTextEditor执行以下操作。

protected function createEmailTemplateContent(subRecord:String = null):void{
var index:int = emailTemplateContent.selection.beginIndex;
if(subRecord != null){
    emailTemplateContent.text = emailTemplateContent.text.substring(0,index) + '{[' + fieldTypeDD.selectedItem + '].[' + insertFieldDD.selectedItem.toString().substring(0,insertFieldDD.selectedItem.toString().indexOf('(+)')-1) +  '].[' + subRecord + ']}' + emailTemplateContent.text.substring(index,emailTemplateContent.text.length);
}else{
    emailTemplateContent.text = emailTemplateContent.text.substring(0,index) + '{[' + fieldTypeDD.selectedItem + '].[' + insertFieldDD.selectedItem + ']}' + emailTemplateContent.text.substring(index,emailTemplateContent.text.length);
}
}

当用户从下拉列表中选择项目时,上述方法实现。然后,该特定项目将填充在富文本编辑器的文本区域内。

我的问题是,如果用户已经对文本进行了一些格式化(使用RichTextEditor中的格式化选项),那么当用户选择项目并填充文本区域时,也会被替换。

在此,' emailTemplateContent'表示RichTextEditor。我在下面包含了我的RichTextEditor代码。

<component:RichTextEditorWithAllControls id="emailTemplateContent" dropShadowVisible="false" creationComplete="emailTemplatesContentInit()" headerHeight="0" width="100%" height="100%" htmlText="@{emailTemplateObject.emailContent}" showControlBar="false" verticalScrollPolicy="auto"/>

我认为这是因为当我填写“&#39;文本”时richTextEditor中的值,&#39; htmlText&#39;价值也被取代。

有没有人知道克服这个问题的方法。

提前致谢。

1 个答案:

答案 0 :(得分:0)

首先将连接的文本存储在String中,然后将其替换为html文本。像下面的东西

protected function createEmailTemplateContent(subRecord:String = null):void{
  var index:int = emailTemplateContent.selection.beginIndex;
  var newText:String;
  if(subRecord != null){
    newText = emailTemplateContent.text.substring(0,index) 
    + '{[' + fieldTypeDD.selectedItem + '].[' + insertFieldDD.selectedItem.toString().substring(0,insertFieldDD.selectedItem.toString().indexOf('(+)')-1) +  '].[' + subRecord + ']}' + emailTemplateContent.text.substring(index,emailTemplateContent.text.length);
  }else{
    newText = emailTemplateContent.text.substring(0,index) + '{[' + fieldTypeDD.selectedItem + '].[' + insertFieldDD.selectedItem + ']}' + emailTemplateContent.text.substring(index,emailTemplateContent.text.length);
  }
  emailTemplateContent.htmlText = emailTemplateContent.htmlText.replace(emailTemplateContent.text, newText);
}