|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Nov 2006
Сообщений: 176
|
Bindable в ItemRenderer на основе UIComponent
Здравствуйте. Столкнулся с такой проблемой: хочу создать itemRenderer на основе UIComponent, но не знаю как отловить изменение данных. Eсли делать на основе Canvas то всё просто:
- как только значение price изменилось - itemRenderer перерисовался, но как реализовать подобное в UIComponent без понятия.
Функция отрабатывается только при первоначальной установке данных |
|
|||||
Регистрация: Jun 2008
Адрес: Prague
Сообщений: 32
|
см. mx.binding.BindingUtils
|
|
|||||
Регистрация: Nov 2006
Сообщений: 176
|
установил что изменения отлавливаються когда слушаю простое свойство объекта:
но когда весь объект - не срабатывает: (_data - приватная переменная, this.data - set/get data) Несколько неудобно потому что надо отслеживать несколько свойств. |
|
|||||
А не проще создать свою переменную с тагом [Bindable] (даже нужного класса) и в сеттере data в нее все пихать, а она уже биндится к контролам?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
Регистрация: Mar 2009
Сообщений: 17
|
Может поможет данный код, если я правильно поняла, что Вы хотите. У меня сделано так
<comp:CourseList id="economCourse" label="Экономика" gridData = "{courseData1}" selectCourseEvent = "selectCourseEventHandler(event)"/> <?xml version="1.0" encoding="utf-8"?> <mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:comp="components.*"> <mx:Metadata> [Event(name="selectCourseEvent", type="events.CourseEvent")] </mx:Metadata> <mx:Script> <![CDATA[ import mx.controls.dataGridClasses.DataGridColumn; import events.CourseEvent; import valueObjects.Course; import mx.events.ListEvent; import mx.collections.ArrayCollection; [Bindable] public var gridData:ArrayCollection; private function itemClickHandler(event:ListEvent):void{ var courseData:Course; courseData = event.itemRenderer.data as Course; var courseEventObject:CourseEvent = new CourseEvent("selectCourseEvent", courseData); dispatchEvent(courseEventObject); } ]]> </mx:Script> <mx:DataGrid id="employeeGrid1" width="413" height="377" dataProvider="{gridData}" itemClick = "itemClickHandler(event)"> <mx:columns> <mx:DataGridColumn itemRenderer="components.CoursesRenderer"/> </mx:columns> </mx:DataGrid> </mx:HBox> <?xml version="1.0" encoding="utf-8"?> <mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Label text="{data.courseName}" fontWeight="bold" fontSize="12"/> <mx:Label text="Препопадет: {data.partyId}"/> </mx:HBox> package events { import flash.events.Event; import valueObjects.Course; public class CourseEvent extends Event { public var course:Course; public function CourseEvent(type:String, course:Course) { super(type); this.course = course; } override public function clone():Event{ return new CourseEvent(type, course); } } } |
Часовой пояс GMT +4, время: 07:41. |
|
« Предыдущая тема | Следующая тема » |
|
|