我的自定义组件' autocomplete-input'应该提供自动完成功能。我正在使用'列表'纸张输入的属性'。 '列表'的值属性必须是' id'一位数据家'。
这个工作正常,只要我只实例化一个' autocomplete-input'元件。如果有多个'自动完成输入'元素,它们都显示相同的自动完成提议。我想这是因为'列表'属性不使用本地DOM,因此使用第一个' datalist'有特殊的' id'。我怎么能避免这个?
'自动完成输入'元素:
<dom-module id="autocomplete-input">
<template>
<datalist id="autocomplete">
<template is="dom-repeat" items="{{proposals}}">
<option data-value$="{{item.value}}">{{item.content}}</option>
</template>
</datalist>
<paper-input id="input" list="autocomplete" label="{{header}}" value="{{content::input}}"></paper-input>
</template>
<script>
Polymer({
is: 'autocomplete-input',
properties: {
header: String,
content: String,
proposals: Array
}
});
</script>
</dom-module>
答案 0 :(得分:1)
使用全局计数器并将其添加到您的ID
<dom-module id="autocomplete-input">
<template>
<datalist id$="[[autocompleteId]]">
<template is="dom-repeat" items="{{proposals}}">
<option data-value$="{{item.value}}">{{item.content}}</option>
</template>
</datalist>
<paper-input id="input" list$="[[autocompleteId]]" label="{{header}}" value="{{content::input}}"></paper-input>
</template>
<script>
Polymer({
is: 'autocomplete-input',
properties: {
header: String,
content: String,
proposals: Array,
}
}),
autoCompleteId: function() {
return this.autocompleteId = this.autocompleteId || ++globalId;
// see linke below to figure out how to use globals
}
</script>
</dom-module>
有关Polymer中全局变量的更多详细信息,请参阅Polymer 1.0 Global Variables(我的JS不够好,因为我只使用Dart中的Polymer)