我需要在Liferay portlet页面中有两个依赖的AutoCompleteList。当我从第一个AutoCompleteList中选择一些值然后根据它的选择值我需要更改第二个AutoCompleteList源数据。根据现有的信息,我已经完成了编码,除了一个问题外它工作正常。
当我在第一个AutoCompleteList中选择项目时,第二个AutoCompleteList会根据我的第一个列表的所选项目填充某些值。然后,如果我在第一个列表中再次更改我的选择,则第二个AutoCompleteList将使用新的可能值进行更新。但它会在现有列表中附加新的可能值,或者可以说保持两种情况下的数据缓存。但是我需要根据当前选择的第一个列表仅在列表中显示可能的值。例如,对于第一个列表中的选定值1,如果最初在第二个列表中显示[A,B],则在将第一个列表中的选择从1更改为2后,显示[[A,B] + [C,D] ]
下面是该代码的一部分。我尝试在第二个AutoComepleteList中设置“enableCache:'false'”但不起作用。
<aui:script>
AUI().use('autocomplete-list','aui-base','aui-io-request','autocomplete-filters','autocomplete-highlighters',
function (A)
{
A.io.request('<%=getUrl %>',{
dataType: 'json',
method: 'GET',
on: {
success: function() {
new A.AutoCompleteList(
{
allowBrowserAutocomplete: 'false',
activateFirstItem: 'true',
inputNode: '#<portlet:namespace />name',
resultTextLocator: 'name',
render: 'true',
resultHighlighter: 'phraseMatch',
resultFilters:['phraseMatch'],
source:this.get('responseData'),
on: {
select: function(event) {
var result = event.result.raw;
A.one('#<portlet:namespace/>pk').val(result.id)
}
},
})
}}
});
});
</aui:script>
<aui:input id="pk" name="pk" label="Primary Id"
onChange='<%= renderResponse.getNamespace() + "fetchDisplayValues();"%
/>
Liferay.provide(
window,
'<portlet:namespace />fetchDisplayValues',
function() {
var A = AUI();
var pk = A.one("#<portlet:namespace/>pk");
var id = pk.get("value");
var url = '<%=getValues %>';
url = url+"&<portlet:namespace/>id="+id;
var datasource = new A.io.request(url,{
dataType: 'json',
method: 'GET',
on: {
success: function(){
var data = this.get('responseData');
new A.AutoCompleteList(
{
allowBrowserAutocomplete: 'false',
enableCache: 'false',
activateFirstItem: 'true',
inputNode: '#<portlet:namespace />displayName',
resultTextLocator: 'name',
render: 'true',
resultHighlighter: 'phraseMatch',
resultFilters:['phraseMatch'],
source:this.get('responseData'),
on: {
select: function(event) {
var result = event.result.raw;
A.one('#<portlet:namespace/>displayId').val(result.id);
}
},
})
}
}
});
})
</aui:script>
请帮我解决此问题。提前谢谢。