我正在使用Polymer的0.5.1版本,并尝试创建自己的Web组件。首先尝试创建一个选择器对象,该对象通过ajax远程填充选项。我在网上找到的所有示例都使用硬编码列表。但是,我的远程选项在下拉菜单的外部(作为基本列表的右侧)呈现-我怀疑是因为paper-dropdown-menu
返回ajax数据后,该项不会自行重新呈现。如何强制刷新/重新渲染嵌入式paper-dropdown-menu
元素?或者,我应该如何使用远程数据和纸张下拉菜单?
我查看了文档,但数据绑定似乎是自动的,并且我无法在Chrome开发工具中找到刷新方法。我在控制台中没有收到任何错误,它看起来很有趣,而且从未崩溃。on-core-select
当我选择一个项目时,该方法被触发,因此数据似乎绑定正确。
我的元素:
<link rel="import" href="../bower_components/polymer/polymer.html">
<link rel="import" href="../bower_components/paper-dropdown-menu/paper-dropdown-menu.html">
<link rel="import" href="../bower_components/core-selector/core-selector.html">
<link rel="import" href="../bower_components/core-ajax/core-ajax.html">
<link rel="import" href="../bower_components/core-signals/core-signals.html">
<link rel="import" href="../elements/custom-selector-item.html">
<polymer-element name="custom-selector" attributes="host objectivebanks">
<template>
<template if="{{objectivebanks.length == 0}}">
<core-ajax auto url="https://{{host}}/objectivebanks" on-core-response="{{updateBankList}}" on-core-error="{{onError}}"></core-ajax>
</template>
<paper-dropdown-menu label="Objective Banks" on-core-select="{{publishBankSelect}}">
<paper-dropdown class="dropdown">
<core-selector class="menu">
<template repeat="{{bank in objectivebanks}}">
<custom-selector-item name="{{bank.displayName}}" myId="{{bank.id}}">
</custom-selector-item>
</template>
</core-selector>
</paper-dropdown>
</paper-dropdown-menu>
</template>
<script>
Polymer('custom-selector', {
ready: function () {
this.host = this.host || 'example.com';
this.objectivebanks = this.objectivebanks || [];
},
onError: function (e, resp) {
console.log('error!: ' + resp.response);
},
publishBankSelect: function (e, detail, sender) {
if (detail.isSelected) {
this.fire('core-signal', {
'name' : "bankselected",
'data' : detail.item
});
}
},
updateBankList: function (e, resp) {
console.log('here');
this.objectivebanks = JSON.parse(resp.response);
}
});
</script>
</polymer-element>
==========================================
根据Mohammad的建议,我将我的Polymer()代码更新为以下代码(仍然无法正常工作):
Polymer('custom-selector', {
ready: function () {
this.host = this.host || 'example.com';
},
created: function () {
this.objectivebanks = this.objectivebanks || [];
},
onError: function (e, resp) {
console.log('error!: ' + resp.response);
},
publishBankSelect: function (e, detail, sender) {
if (detail.isSelected) {
this.fire('core-signal', {
'name' : "bankselected",
'data' : detail.item
});
}
},
updateBankList: function (e, resp) {
console.log('here');
this.objectivebanks = JSON.parse(resp.response);
}
});
解决方案-我需要paper-dropdown.html
在链接导入中添加内容,并从https://github.com/web-animations/web-animations-js安装最新的web-animations-js 。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句