我需要知道何时可以以编程方式开始使用我的自定义Polymer元素.元素仍然undefined在我的window.onload处理程序中.有没有一种确定的方法来正确使用Polymer 1.0?
-编辑-
我看到有一个downvote,所以让我澄清一下这个问题.我有以下自定义元素定义:
<link rel="import" href="../../bower_components/polymer/polymer.html">
<dom-module id="element-one">
<style>
:host { display: block; background-color: blue; }
</style>
<template>
<h1>Element One</h1>
<content></content>
</template>
</dom-module>
<script>
var ElementOne = Polymer({
is: "element-one"
});
</script>
Run Code Online (Sandbox Code Playgroud)
我然后在我的导入中index.html:
<link rel="import" href="elements/element-one/element-one.html">
Run Code Online (Sandbox Code Playgroud)
在标签index.html之前的底部</body>,我尝试实例化一个ElementOne元素:
<script>
console.log(typeof ElementOne); // undefined
var el = new ElementOne(); // fails, obviously
// try on window load
window.onload = function () {
console.log(typeof ElementOne); // undefined
};
</script>
Run Code Online (Sandbox Code Playgroud)
我应该注意到这个问题发生在最新的Firefox和IE …
我需要将"tap"事件委托给自定义元素中的关闭按钮,然后在close()根元素上调用方法.这是一个例子:
xtag.register('settings-pane', {
lifecycle: {
created: function () {
var tpl = document.getElementById('settings-pane'),
clone = document.importNode(tpl.content, true);
this.appendChild(clone);
}
},
events: {
'tap:delegate(button.close)': function (e) {
rootElement.close(); // <- I don't know the best way to get rootElement
}
},
methods: {
close: function () {
this.classList.add('hidden');
}
}
});Run Code Online (Sandbox Code Playgroud)
<template id="settings-pane">
<button class="close">?</button>
</template>Run Code Online (Sandbox Code Playgroud)