【问题标题】:How to provide Disclosure button only for a subset of items in a List?如何仅为列表中的项目子集提供披露按钮?
【发布时间】:2013-03-08 06:55:20
【问题描述】:

我有一个要求,我只需要为 Sencha List 中的某些项目添加披露按钮。知道如何做到这一点吗?

将 onItemDisclosure 设置为 TRUE 会为列表中的所有项目启用此选项。但我只想根据特定条件为子集启用它。

非常感谢任何帮助。

【问题讨论】:

    标签: extjs4 sencha-touch sencha-touch-2


    【解决方案1】:

    使用列表的disclosureProperty。来自文档:

    检查每条记录的属性,以显示每条记录的披露。此属性必须为 false 以防止在项目上显示披露。

    默认为:“披露”

    因此,您只需在模型中添加名为 disclosure 的字段即可。

    Ext.define('MyModel', {
        extend:'Ext.data.Model',
    
        fields:[//other fields
            {
                name:'disclosure',
                convert: function(value, record){
                    // logic to determine if disclosure should be displayed.
                    // return Boolean value
                }
            }
        ]
    });
    

    【讨论】:

    • 您好,感谢您的快速帮助。我已将调试器放在 convert() 中,但当调试器被击中时,商店没有被加载。我无法用我的逻辑来检查列表行是否需要显示披露按钮。请帮忙。
    • 您的评论不清楚。您是说在调试器中调用了 convert 方法,而不是在加载商店时?或者您是说在调试时永远不会触发转换方法?您如何设置商店和模型?您的商店是使用模型还是只是在商店中指定字段名称列表并让 Ext 自动为您生成模型?
    • 我是 Sencha Touch 的新手。我的商店使用模型文件夹中的模型,当调试器被点击时模型没有加载。
    • 传递给转换函数的value 不是status 的值,它是您的json blob 中的公开属性的值(未定义或null,因为您没有发送它并且正在创建现在从一无所有)。如果要获取状态字段的值,请从传入的记录中获取它。if (record.get('status') === "Live! Train Status") { /* ... */ }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多