带有建议问题的输入控件 - SAP UI5
Input control with suggestions Issue - SAP UI5
我有一个带建议的输入控件。每当用户选择与他输入的内容相匹配的内容时/如果输入的值是随机的,我们需要调用 oData 服务来验证输入。问题是:如果用户选择一个值并且它与前一个不同 - 那么该服务将被调用两次。这是因为这两个函数都被触发了两次。在 change() 和 suggestionItemSelected() 上。我在两个地方都调用相同的函数,因为要完成的任务基本相同。
如何确保如果值确实发生变化但从建议中选择只调用函数一次?
XML.view
<Input id="cc" change="onCC" showSuggestion="true" suggestionItems="{path:'order>/CreditCard'}"
suggestionItemSelected="onCC">
<suggestionItems>
<core:Item key="{order>CardNumber}" text="{order>CardNumber}"/>
</suggestionItems>
</Input>
Controller.js
onCardSelected: function (oEvent) {
var sServiceUrl = this.getOwnerComponent().getMetadata().getManifestEntry("sap.app").dataSources["abc"].uri;
var OdataModel = new sap.ui.model.odata.v2.ODataModel(sServiceUrl);
var sPath = "/ABCSet";
var oFilters = [];
oFilters.push(new sap.ui.model.Filter("CardNumber", sap.ui.model.FilterOperator.EQ, valueEntered));
OdataModel.read(sPath, {
filters: oFilters,
success: this._ccValidateSuccess.bind(this),
error: this._ccValidateError.bind(this)
});
}
您不需要 'suggestionItemSelected' 的事件处理程序。因为即使在 suggestionItemSelected 时,无论如何都会触发更改事件处理程序。
我有一个带建议的输入控件。每当用户选择与他输入的内容相匹配的内容时/如果输入的值是随机的,我们需要调用 oData 服务来验证输入。问题是:如果用户选择一个值并且它与前一个不同 - 那么该服务将被调用两次。这是因为这两个函数都被触发了两次。在 change() 和 suggestionItemSelected() 上。我在两个地方都调用相同的函数,因为要完成的任务基本相同。
如何确保如果值确实发生变化但从建议中选择只调用函数一次?
XML.view
<Input id="cc" change="onCC" showSuggestion="true" suggestionItems="{path:'order>/CreditCard'}"
suggestionItemSelected="onCC">
<suggestionItems>
<core:Item key="{order>CardNumber}" text="{order>CardNumber}"/>
</suggestionItems>
</Input>
Controller.js
onCardSelected: function (oEvent) {
var sServiceUrl = this.getOwnerComponent().getMetadata().getManifestEntry("sap.app").dataSources["abc"].uri;
var OdataModel = new sap.ui.model.odata.v2.ODataModel(sServiceUrl);
var sPath = "/ABCSet";
var oFilters = [];
oFilters.push(new sap.ui.model.Filter("CardNumber", sap.ui.model.FilterOperator.EQ, valueEntered));
OdataModel.read(sPath, {
filters: oFilters,
success: this._ccValidateSuccess.bind(this),
error: this._ccValidateError.bind(this)
});
}
您不需要 'suggestionItemSelected' 的事件处理程序。因为即使在 suggestionItemSelected 时,无论如何都会触发更改事件处理程序。