2017-05-02 15 views
0

ActionScript 코드에서 richTextEditor를 사용하여 다음을 수행합니다.Flex에서 서식을 잃지 않고 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"/> 

은 내가 RichTextEditor는의 '텍스트'값을 채울 때 '는 htmlText 가치도 교체받을 때문에 이런 가정합니다.

누구든지이 문제를 극복하는 방법을 알고 있습니까?

미리 감사드립니다.

+0

포맷 된 텍스트를 보여주는 스크린 샷과 드롭 다운에서 항목을 선택한 후에는 어떻게 될까요? – gbdcool

답변

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); 
}