Всякие разные штуки сомнительной полезности сделанные в свободное от работы время.
insertChildBefore() и insertChildAfter()
Столкнулся с одной очень неприятной вещью: оказалось, что добабляя элементы XML'я используя эти два метода, при том, что исходный элемент уже является частью XML'я, куда вы его хотите добавить, элемент будет скопирован не по значению, а по ссылке. На первый взгляд может показаться, что это не принципиально... но... последствия на самом деле очень нехорошие.
Во-первых, все компоненты, будь то mx или fl, так или иначе использующие концепцию itemRenderer'ов выдадут вам совсем не те результаты, которых вы ожидаете, а в некоторых ситуациях просто перестанут функционировать.
Вот простой пример:
Код:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ private function addAnotherNode():void { provider.insertChildAfter(provider.*[0], provider.*[0]); } ]]> </mx:Script> <mx:XML id="provider"> <root> <a>foo</a> <a>bar</a> </root> </mx:XML> <mx:List dataProvider="{provider.a}" width="100" /> <!-- click on this button few times and try to select the topmost "foo" item. You'll see you can select only the last <a>foo</a> where all the rest of <a>foo</a>'s are "invisible" to list functions --> <mx:Button label="addAnotherNode" click="addAnotherNode()"/> </mx:Application>
Во-вторых: ели вам нужно после добавления элемента XML'я найти, куда же вы его добавили, то вместо одного, вы можете обнаружить, что таких элементов может быть 2 и больше... в такой ситуации поиск по XMLList становится нереализуемым в принципе т.как все без исключения свойства двух и больше объектов списка будут одинаковыми...
Резюме: о баге сообщил. Жду реакции, а пока - просто не используйте insertChildBefore() и insertChildAfter() с этими компонентами.
http://bugs.adobe.com/jira/browse/ASC-3706
(заодно, можете и проголосовать)
Всего комментариев 0
Комментарии
Последние записи от wvxvw
- Dired - текстовый проводник по файловой системе (29.06.2013)
- Навигация по HTML с WASD (09.06.2012)
- JavaScript, все не так плохо (07.06.2012)
- Что такое tarball и чем его пакуют (11.04.2012)
- Критика Presentation Model (18.02.2012)