Какие свойства отложенного связывания используются в операторе GWT CSSResource @if?

В настоящее время я пытаюсь использовать условный CSS в файле CssResource, как описано здесь, но мне немного неясно "<deferred-binding-property>" часть.

Где должны быть определены эти свойства? Я хотел бы думать, что любой <define-property> тег в дереве наследования модуля, который в данный момент компилируется, будет доступен, но это не так. Я серьезно не могу найти какую-либо документацию этого онлайн.

В моем случае проект, над которым я работаю, состоит из двух приложений, каждое из которых имеет свой собственный модуль GWT, но оба они наследуют "основной" модуль, который содержит общий код, включая ClientBundle/CssResource с @if заявления. Свойство отложенной привязки, которое я хочу оценить, определено в другом файле модуля gwt, formfactor.gwt.xml.

Я пытаюсь использовать следующее:

@if formfactor mobile{
  .wrapper{
     top:50px;
  } 
}

Все gwt-компилируется без ошибок. Любая отложенная привязка в самих файлах модуля, основанная на свойстве "formfactor", оценивается правильно (т.е. я получаю "мобильные"-специфичные представления, как и ожидалось). Ни одно из правил CSS в @if блок вводится.

Я попытался унаследовать formfactor.gwt.xml как в основном файле gwt.xml, так и в файлах приложения gwt.xml, и оба работали, как описано в предыдущем абзаце.

Если я включу @else оператор в файле CssResource, код в @else блок действительно вводится, но если я включу @elif formfactor desktop tablet (единственные два других значения, определенные для свойства formfactor), то ни @if блок ни @elif блок вводится.

обновление- хотя я все еще думаю, что было бы полезно получить окончательный ответ на вопрос, похоже, что мой файл CssResource действительно имеет свойство formfactor в области видимости. Эта проблема, похоже, связана с проблемой GWT 4697 (code.google.com/p/google-web-toolkit/issues/detail?id=4697), где заключительное предложение оператора @if/@elif/@else всегда вводится независимо от значения оцениваемого свойства defferred-binding-свойства.

Одним из обходных путей в моей ситуации было просто установить "стандартное" значение в обычном CSS, а затем вручную изменить значение в блоке @if, например:

.wrapper{ 
  top:66px; 
  ... 
}
@if formfactor mobile {
  .wrapper{
    top:50px;
  }
}

Пока вы не используете операторы @def внутри условного выражения, второе правило будет введено только в том случае, если условное выражение имеет значение true.

Я понимаю, что это может не работать со всеми правилами CSS, так как оно по существу определяет второе значение для правила без удаления первого значения, но это всего лишь обходной путь!

0 ответов

Другие вопросы по тегам