如何在SAPUI5中对输入有独特的建议

How to have unique suggestion on input in SAPUI5

本文关键字:输入 SAPUI5      更新时间:2023-09-26

我试图从输入框中得到建议,但如果模型在"wheelName"中有多个值,如"wheel1","wheel1","wheel2",并且有了这个,当我在输入框中输入"wheel1"时,我得到2个建议作为wheel1, wheel1,但我想要唯一的建议即wheel1只显示一次。

输入声明如下:-

<Input
            id="wheelInput"
            type="Text"
            placeholder="Enter Wheel..."
            showSuggestion="true"
            maxLength="40"
            startSuggestion="3"
            suggestionItems="{wheel>/results}" >
            <suggestionItems>
                <core:Item text="{wheel>wheelName}"/>
            </suggestionItems>
        </Input>

假设您输入的每个字符的结果列表都不同,您可以将一个函数附加到input字段的liveChange上。

你可以把你的自定义逻辑(例如没有双名)放到一个单独的模型属性中。我还没有测试代码,但应该可以工作(只要我没有打错字)。

视图:

<Input
            id="wheelInput"
            type="Text"
            placeholder="Enter Wheel..."
            showSuggestion="true"
            maxLength="40"
            liveChange="filterWheelList"
            startSuggestion="3"
            suggestionItems="{wheel>/filteredWheelList}" >
            <suggestionItems>
                <core:Item text="{wheel>wheelName}"/>
            </suggestionItems>
        </Input>

控制器:

   filterWheelList: function(){
    var wheelModel = sap.ui.getCore().getModel("wheelModel");
    var wheelList = wheelModel.getProperty("/results");
    var uniqueNames = [];
    var filteredWheelList = wheelList.filter(function(wheel){
    if (uniqueNames.indexOf(wheel.wheelName) === -1){
    uniqueNames.push(wheel.wheelName);
    return true;
    } else {
    return false;
    }
    });
    wheelModel.setProperty("/filteredWheelList", filteredWheelList);
    }