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