Parent 元素在其 child 之前准备就绪 - Polymer 1.0
Parent element is ready before its child - Polymer 1.0
此问题已修改以符合实际问题。
原题误关注了iron-ajax,原题请见下方。问题应该是:
请指教为什么 child iron-ajax 元素在 my-component 的 'ready' 回调期间没有准备好,定义如下:
<dom-module id="my-component">
<template>
<link rel="import" href="../../../bower_components/iron-ajax/iron-ajax.html">
<iron-ajax
id="selectionLoader"
url=""
method="GET"
handle-as="json"
debounce-duration="300"
last-response="{{ suggestedOptions }}"
last-error="{{ lastError }}"
verbose=true
>
</iron-ajax>
</template>
</dom-module>
<script>
(function () {
Polymer({
is : 'paper-select',
ready : function() {
console.log(this.$.selectionLoader.generateRequest); // undefined
}
})
})()
</script>
原题
原标题:'WebComponentsReady' 在 iron-ajax 就绪之前触发 - Polymer 1.0
我需要为观察到的自定义组件的 属性 分配一些值,该组件在内部使用 iron-ajax 并禁用了自动 - 因此我需要在 iron-ajax 元素上调用 .generateRequest .这应该在主机 page/component 准备就绪时发生,以便根据主机组件代码中的数据从服务器获取一些默认值。
selected 是组件上的数组 属性 观察如下:
observers: [
'_selectedChanged(selected.splices)' // _selectedChanged calls .generateRequest
]
观察者被触发:
window.addEventListener('WebComponentsReady', function() {
document.querySelector('paper-select').selected = [{id : 11855},{id : 11856}];
});
问题是 WebComponentsReady 在 .generateRequest 在 iron-ajax 上可用之前触发。因此,我的组件已初始化,调用了 _selectedChanged,但其中的 iron-ajax 缺少该方法,实际上还有其他 properties/methods。
我已经在组件内部使用 setTimeout 实现了一个 "deferred" 解决方法,它的工作原理很不错,但显然不是这样。如果在页面加载后一段时间后触发观察者,则一切正常,例如通过用户的输入。这说明逻辑是对的,只是时机不对。
我错过了什么?
真正的问题是在我的组件的 中导入了 html。
'wrong' 事件的顺序是有意义的,因为 iron-ajax 在它的主机调用 'ready' 回调时甚至没有注册。
我已将导入移到 之外,现在一切正常。
此问题已修改以符合实际问题。
原题误关注了iron-ajax,原题请见下方。问题应该是:
请指教为什么 child iron-ajax 元素在 my-component 的 'ready' 回调期间没有准备好,定义如下:
<dom-module id="my-component">
<template>
<link rel="import" href="../../../bower_components/iron-ajax/iron-ajax.html">
<iron-ajax
id="selectionLoader"
url=""
method="GET"
handle-as="json"
debounce-duration="300"
last-response="{{ suggestedOptions }}"
last-error="{{ lastError }}"
verbose=true
>
</iron-ajax>
</template>
</dom-module>
<script>
(function () {
Polymer({
is : 'paper-select',
ready : function() {
console.log(this.$.selectionLoader.generateRequest); // undefined
}
})
})()
</script>
原题
原标题:'WebComponentsReady' 在 iron-ajax 就绪之前触发 - Polymer 1.0
我需要为观察到的自定义组件的 属性 分配一些值,该组件在内部使用 iron-ajax 并禁用了自动 - 因此我需要在 iron-ajax 元素上调用 .generateRequest .这应该在主机 page/component 准备就绪时发生,以便根据主机组件代码中的数据从服务器获取一些默认值。
selected 是组件上的数组 属性 观察如下:
observers: [
'_selectedChanged(selected.splices)' // _selectedChanged calls .generateRequest
]
观察者被触发:
window.addEventListener('WebComponentsReady', function() {
document.querySelector('paper-select').selected = [{id : 11855},{id : 11856}];
});
问题是 WebComponentsReady 在 .generateRequest 在 iron-ajax 上可用之前触发。因此,我的组件已初始化,调用了 _selectedChanged,但其中的 iron-ajax 缺少该方法,实际上还有其他 properties/methods。
我已经在组件内部使用 setTimeout 实现了一个 "deferred" 解决方法,它的工作原理很不错,但显然不是这样。如果在页面加载后一段时间后触发观察者,则一切正常,例如通过用户的输入。这说明逻辑是对的,只是时机不对。
我错过了什么?
真正的问题是在我的组件的 中导入了 html。 'wrong' 事件的顺序是有意义的,因为 iron-ajax 在它的主机调用 'ready' 回调时甚至没有注册。
我已将导入移到