【问题标题】:Polymer iron-form not working聚合物铁型不工作
【发布时间】:2015-08-28 17:56:41
【问题描述】:

我的 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>

在 chrome 中,表单永远不会升级为铁表单,但在 Firefox 中可以正常工作。但是,我可以使用:document.createElement('form', 'iron-form'); 来创建正确升级的铁型。 这真让我抓狂。有任何想法吗?谢谢

【问题讨论】:

  • sn-p 看起来是正确的,我怀疑问题出在其他地方。您可以发布包含该表单的完整页面吗?
  • @Zikes,我的 html 正在使用流星 (blaze) 动态呈现。该元素正在正确导入,因为它可以在 Firefox 中运行,并且我可以在呈现包含iron-form 的实际模板之前强制创建iron-forms。我还尝试在我的模板中包含iron-input 来测试它是否是扩展基本元素的问题。这两个元素都使用了is 属性,但iron-input 工作得很好!

标签: polymer polymer-1.0


【解决方案1】:

我不确定为什么iron-input 的工作方式会有所不同。当您在模板中创建 Iron-input 时,您确定它可以完美地作为 Polymer 元素工作吗? (例如,它有没有像debounce 这样的实用函数?)我问是因为它看起来像标准输入。

查看 Meteor 代码,看起来 any 类型扩展元素不应该工作。据我所知,所有标签的创建似乎都在这里完成:

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 仅在您支持本机自定义元素或安装了 polyfill 时才有效,因此 Meteor 可能希望以另一种方式处理。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-21
  • 1970-01-01
  • 1970-01-01
  • 2016-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多