Полимерная железоформа не работает

У меня есть следующая разметка в моем html:

<form is="iron-form" login-form>
    <paper-input label="Email" type="email" name="email"></paper-input>
    <paper-input label="Password" type="password" name="password"></paper-input>
    <paper-button class="self-end btn-primary" raised login-btn>Login</paper-button>
</form>

В хроме форма никогда не обновляется до железной формы, но в фаерфоксе работает нормально. Тем не менее, я могу использовать: document.createElement('form', 'iron-form'); для создания железной формы, которая должным образом обновлена. Это сводит меня с ума. Любые идеи? Спасибо


person Greg Neiheisel    schedule 12.06.2015    source источник
comment
Этот фрагмент выглядит правильно, я подозреваю, что проблема в другом. Можете ли вы опубликовать полную страницу, содержащую эту форму?   -  person Zikes    schedule 12.06.2015
comment
@Zikes, мой html динамически отображается с использованием метеора (blaze). Элемент импортируется правильно, потому что он работает в Firefox, и я могу обязательно создать iron-forms до того, как мой фактический шаблон, содержащий iron-form, будет отображаться. Я также попытался включить iron-input в свой шаблон, чтобы проверить, не является ли это проблемой при расширении базовых элементов. Оба элемента используют атрибут is, но iron-input работает отлично!   -  person Greg Neiheisel    schedule 12.06.2015


Ответы (1)


Я не уверен, почему iron-input должен работать по-другому. Вы уверены, что железный вход отлично работает как полимерный элемент, когда вы создаете его в шаблоне? (Например, есть ли у него вспомогательные функции, такие как debounce?) Я спрашиваю, потому что это похоже на стандартный ввод.

Глядя на код Meteor, не похоже, что какие-либо элементы расширения типа должны работать. Насколько я могу судить, похоже, что все создание тегов происходит здесь:

https://github.com/meteor/meteor/blob/832e6fe44f3635cae060415d6150c0105f2bf0f6/packages/blaze/materializer.js#L99

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

} else if (tag.attrs && ('is' in tag.attrs)) {
  // type-extension custom element
  elem = document.createElement(tagName, tag.attrs[is]);     
} else {
  // normal elements
  elem = document.createElement(tagName);
}

Параметр createElement с двумя аргументами будет работать только в том случае, если у вас есть встроенная поддержка пользовательских элементов или у вас установлен полифилл, поэтому Meteor может захотеть справиться с этим другим способом.

person DocDude    schedule 12.06.2015
comment
Да, пришлось покопаться и пришел к такому же выводу. Хаха спасибо! - person Greg Neiheisel; 14.06.2015
comment
Смежный вопрос .. Благодарю, если вы можете помочь в этом - как заставить метеор справиться с этим? forums.meteor.com/t/support- для-полимеров-это-атрибут-формы-железа/ - person kctang; 01.07.2015