如何在 SAPUI 中禁用 ListItem

How to disable ListItem in SAPUI

我有一个 sap.m.List 类型的列表,其中包含可点击的项目。我想禁用其中一些项目,但我找不到任何 属性 或类似的东西可以实现这一点。

事实上,当查看 getTypeListType 时,它说:

Inactive type cannot be used to disable list items.

我搜索了 disable/enable 个属性和类似的但我找不到。

您可以尝试已阻止 属性。虽然它在 1.69 中已被弃用,但它仍然有效。如果您为整个项目设置 blocked = true 它将变灰并且不会对用户操作做出反应。

看起来像这样:

您可以尝试使用 Active / Inactive 类型,但如前所述,它不会直观地指示列表项是可单击的。

但是,它确实 抑制了 press 事件。请参见下面的示例,其中状态包含 'M' 的列表项变为非活动状态。

var myFormatter = {
    state: function(value) {
        if (value.includes("M")) {
          return "Inactive";
        } 
        return "Active";
    }
};

sap.ui.controller("view1.initial", {
    onInit : function(oEvent) {
        var aData = [
            {
                "fname": "Waddie",
                "lname": "Bowman",
                "tel": "(305)703-1256",
                "address": "6454 Molestie Ave",
                "city": "Guelph",
                "state": "ME",
                "zip": 95624
            },
            {
                "fname": "Stuart",
                "lname": "Warren",
                "tel": "(167)539-0934",
                "address": "2691 Sollicitudin Ln",
                "city": "Stamford",
                "state": "MA",
                "zip": 74267
            },
            {
                "fname": "Bill",
                "lname": "Geouque",
                "tel": "(461)569-0913",
                "address": "9313 Orci Rd",
                "city": "Winfield",
                "state": "VT",
                "zip": 96899
            },
            {
                "fname": "Marcellous",
                "lname": "Presas",
                "tel": "(759)512-5873",
                "address": "2739 Fringilla Ave",
                "city": "Camden",
                "state": "MD",
                "zip": 62068
            },
            {
                "fname": "Candis",
                "lname": "Berger",
                "tel": "(913)437-0578",
                "address": "5804 Ipsum Ave",
                "city": "Phoenix",
                "state": "LA",
                "zip": 40023
            },
            {
                "fname": "Lorena",
                "lname": "Adams",
                "tel": "(143)240-5746",
                "address": "3113 Sollicitudin Ct",
                "city": "Shrewsbury",
                "state": "SD",
                "zip": 81678
            },
            {
                "fname": "Lloyd",
                "lname": "Penning",
                "tel": "(856)265-2829",
                "address": "6683 Libero Ln",
                "city": "Vacaville",
                "state": "FL",
                "zip": 35151
            },
            {
                "fname": "Jessica",
                "lname": "Hobson",
                "tel": "(518)458-3456",
                "address": "5961 Amet Ct",
                "city": "Chicago",
                "state": "MS",
                "zip": 44633
            },
            {
                "fname": "Laura",
                "lname": "Nadaraja",
                "tel": "(259)103-8426",
                "address": "1075 Placerat Ct",
                "city": "Moulton",
                "state": "CT",
                "zip": 53957
            },
            {
                "fname": "Denise",
                "lname": "Shroff",
                "tel": "(942)911-7736",
                "address": "7563 Ac Ln",
                "city": "The Dalles",
                "state": "IL",
                "zip": 22777
            }
        ];

        var oModel = new sap.ui.model.json.JSONModel();
        oModel.setData(aData);
        this.getView().setModel(oModel);
    },


    onPress: function(oEvent) {
        alert("OK");
    }
});

sap.ui.xmlview("main", {
    viewContent: jQuery("#view1").html()
})
.placeAt("uiArea");
.myCellStyle1 {
    background-color : #f60;
}
.myCellStyle2 {
    background-color : #0F0;
}
<script id="sap-ui-bootstrap"
    src="https://sapui5.hana.ondemand.com/resources/sap-ui-core.js"
    data-sap-ui-theme="sap_bluecrystal"
    data-sap-ui-xx-bindingSyntax="complex"
    data-sap-ui-libs="sap.m"></script>

<div id="uiArea"></div>

<script id="view1" type="ui5/xmlview">
    <mvc:View
      height="100%"
      controllerName="view1.initial"
      xmlns:mvc="sap.ui.core.mvc"
      xmlns:core="sap.ui.core"
      xmlns="sap.m">
        <List id="myList" items="{/}" mode="None">
            <items>
                <StandardListItem 
                    title="{fname} {lname}" 
                    description="{address} {city} {state}" 
                    type="{
                        path: 'state',
                        formatter: 'myFormatter.state'
                    }"
                    press="onPress"/>
            </items>
        </List>
    </mvc:View>
</script>