Хорошо, после нескольких БОЛЕЕ часов, борющихся с беспорядком, который dijit.InlineEditBox
, я думаю, что у меня есть решение оставшейся проблемы (# 2).
EDIT: Мое первое решение для № 2 по-прежнему имеет недостатки; реализация при http://jsfiddle.net/kfranqueiro/Vuet8/10/ никогда не вернет фактическое внутреннее значение при вызове get ('value').
EDIT # 2: Я обновил решение, так что значение все еще сохраняет реальное (скрытое) значение, сохраняя displayValue отдельно. Смотрите, если это работает лучше:
http://jsfiddle.net/kfranqueiro/Vuet8/13/
Во-первых, чтобы резюмировать для тех, кто не был на IRC:
Выпуск № 1 происходит из-за дорожить не правильно установить в качестве свойства верхнего уровня самого InlineEditBox; он не подбирал его правильно из обернутого виджета.
Проблема № 3 происходила из-за довольно сумасшедшей логики, которую выполняет InlineEditBox, чтобы попытаться разрешить стили. Оказывается, несмотря на то, что InlineEditBox делает установку ширины особенно простой, выставляя ее как числовой атрибут верхнего уровня. (Хотя IINM вы также можете указать процент в виде строки, например «50%»)
Теперь, номер № 2 ... это был убийца. Проблема заключается в том, что у InlineEditBox есть некоторая логика для учета виджетов, у которых есть атрибут displayedValue
, эта логика иногда ошибочна (она ожидает, что свойство displayedValue
действительно существует в виджетах, что необязательно) и в других случаях полностью отсутствует (когда инициализируется InlineEditBox). Я работал над такими, как мог, в своих собственных расширениях dojo.declare
d для InlineEditBox и внутреннего виджета, который он использует, _InlineEditor - поскольку обычно рекомендуется оставить исходный дистрибутив нетронутым.
Это некрасиво (ни один из основополагающих кодов, которые я прорыл, чтобы понять и придумать это), но он, похоже, выполняет свою работу.
Но человек, это было довольно интересно. И потенциально уместным для моих интересов, так как мы использовали этот виджет в наших пользовательских интерфейсах, а также будем использовать его в будущем.
Дайте мне знать, если что-нибудь случится.
(через IRC) проблемы 1 и 3 разрешены в http://jsfiddle.net/kfranqueiro/Vuet8/8/, но 2 по-прежнему выдающийся, и на данный момент я в тупике. –