【问题标题】:Sencha Touch: Any event which is fired after List Items have been renderedSencha Touch:在列表项被渲染后触发的任何事件
【发布时间】:2014-04-07 12:41:32
【问题描述】:

简单的问题,但我还没有找到可能的解决方案:

我在 Sencha Touch 中有一个列表,其中包含通过 itemTpl 属性生成的项目。 现在我想浏览 DOM 中的项目(在它们被渲染之后!)并替换它们的图像(使用 imgCache 进行设备上的图像缓存)

List 的 Painted 事件没有帮助,因为它是在 Item-DOM 渲染之前触发的。

编辑: 我目前的解决方案是覆盖Ext.dataview.List 的内部updateListItem 方法,在那里调用原始updateListItem 并在那里添加我的附加功能。仍在寻找更好的解决方案...

【问题讨论】:

    标签: cordova sencha-touch datalist sencha-touch-2.3


    【解决方案1】:

    列表关联商店的load 事件就是您要查找的内容。

    [编辑]

    正如您在 cmets 中指出的,load 事件不能保证在项目实际呈现后被抛出。

    我认为您的方法是正确的,但不是在适当的位置添加您的功能,为什么不在覆盖方法的末尾触发自定义事件,传递列表项本身,以便您可以监听该事件在名单上?

    类似:

    updateListItem: function(item, index, info) {
    
        // function body ...
    
        me.fireEvent('listitemupdate', [item, index]);
    
    }
    

    这应该让您的代码更加干净和可重用。

    【讨论】:

    • store 加载完成后调用 load 事件...此时 List 的 DOM 为空。
    • 我会研究它,但它适用于类似的任务。你试过了吗?您确定列表组件在商店中触发加载之前没有保持同步吗?
    • 是的,我试过了......我刚刚添加了一个“alert(document.getElementById('DOM_ID_OF_THE_LIST').innerHTML)”,它检索到一个空引用错误。根据文档,store -load- 事件在商店成功加载时调用,而不是在 DataList 被渲染时调用......
    • 我会对此进行调查,我很好奇为什么它对我有用,而不对你有用。顺便说一句,我建议您回答您自己的问题,而不是将您的解决方案编写为编辑。
    • 好吧,谢谢,我也很好奇……关于回答:“声望低于 10 的用户在提问后 8 小时内无法回答自己的问题”;)
    猜你喜欢
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    相关资源
    最近更新 更多