2

我的 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');来创建正确升级的铁型。这真让我抓狂。有任何想法吗?谢谢

4

1 回答 1

2

我不确定为什么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只有在你有原生自定义元素支持或者你安装了 polyfill 时才有效,所以 Meteor 可能希望以另一种方式处理这个问题。

于 2015-06-12T19:06:28.237 回答