Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.03.2008, 17:38
Алан вне форума Посмотреть профиль Отправить личное сообщение для Алан Найти все сообщения от Алан
  № 1  
Ответить с цитированием
Алан

Регистрация: Apr 2007
Сообщений: 30
По умолчанию mx:Tree и CDATA

Добрый день!

Я пытаюсь сделать простейшую админку для flash сайта. XML с исходными данными отображается с помощью mx:Tree, и далее по идее текст выделенного узла отправляется в RichTextEditor.
Все работает, когда в качестве treeLabel используются аттрибуты XML. Однако, основной текст идет с html-разметкой, в теле CDATA, и в этом случае содержимое tree не обновляется.

Исходный код:

Код:
<?xml version="1.0" encoding="utf-8"?>
<!-- Контрольная панель -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
	creationComplete="loadSource()"
	>

    <mx:Script>
        <![CDATA[
			import utils.CDATA;
			import mx.collections.XMLListCollection;
			
            [Bindable]
            public var selectedNode:XML;            
            public var loaderData:XML;
            
            [Bindable]
            public var viewEntry:String;
            public var newText:String;
            
            [Bindable]
            public var debugText:String;
            public var item:XML;
            public var loader:URLLoader=new URLLoader();
            
            [Bindable]
            private var siteData:XMLListCollection;    
            public var source:URLRequest=new URLRequest("data/xml/data.xml");
            
            public function treeChanged(event:Event):void {
                selectedNode=Tree(event.target).selectedItem as XML;
                if(selectedNode.nodeKind()=="text")
                {                	
                	editor.htmlText=selectedNode;                	
                	
                }else{
                	
                	editor.htmlText=selectedNode.@alias
                	
                }
            }
            
            
            
            public function textChanged(event:Event):void
            {
            	var currentItem:XML=XML(siteTree.selectedItem); 
            	          	
            	if(currentItem.nodeKind()=="text")
                {            
                	
                	newText=event.target.htmlText;
                	//CDATA.make() преобразует строку и добавляет теги CDATA                	
                	currentItem=XML(CDATA.make(newText));
                	
                }else{              
                
                	                	
                	newText=event.target.text;                	
                	currentItem.@alias=newText;
                	
                	
                }
            }
            
            public function loadSource():void
            {            	
            	loader.load(source);
            	loader.addEventListener(Event.COMPLETE,handleXML);
            }
            
            public function handleXML(event:Object):void
            {
            	loaderData=XML(loader.data);
            	siteData=new XMLListCollection(loaderData.project.language);
            }
            
            private function treeLabel(item:Object):String {
                var node:XML = XML(item);
                
                if( node.nodeKind()=="text")
                    return node;
                else
                    return node.@alias;
            }


            
        ]]>
    </mx:Script>

    
    <mx:Panel title="Панель управления" height="95%" width="95%" 
        paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom="10">

        <mx:Label width="100%" color="blue" 
            text="Выберите раздел"/>

        <mx:HDividedBox width="100%" height="100%">
            <mx:Tree 
            	id="siteTree" 
            	width="50%" 
            	height="100%" 
            	labelFunction="treeLabel"
                showRoot="true" 
                dataProvider="{siteData}"                
                change="treeChanged(event)"/>
            
            <mx:RichTextEditor 
            	id="editor" 
            	title="Редактор" 
            	height="100%" width="50%"
            	text="Ожидание..."
            	change="textChanged(event)"
            	/>
            	
           <mx:TextArea
           	width="100%"
           	height="50%"
           	text="{debugText}"
           	>
           	
           </mx:TextArea>
            	
        </mx:HDividedBox>
        
    </mx:Panel>
</mx:Application>
И здесь то что получается в итоге:
http://www.project47.ru/dev/testap/AD.html

Заранее извиняюсь за возможные неконструктивности в коде. Я совсем новичок во flex.

Создать новую тему Ответ Часовой пояс GMT +4, время: 08:49.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 08:49.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.