使用 Sencha Touch 在商店加载后设置徽章文本

Posted

技术标签:

【中文标题】使用 Sencha Touch 在商店加载后设置徽章文本【英文标题】:Set badge text after store load with Sencha Touch 【发布时间】:2014-05-28 12:44:30 【问题描述】:

我可以在加载商店后获取商品数量,我想知道如何以及在何处更新当前视图中标签栏中的按钮的徽章文本。

这里有我的视图面板,我认为我可以在初始化函数中设置标记文本: Ext.define('connect.view.InProgressPanel', extend: 'Ext.NavigationView', xtype: 'inprogressPanel', requires: [ 'connect.view.inprogressleads.InProgressList' ], config: itemId: 'inprogressPanel', title: 'Leads In Process', iconCls: 'team', items:[ title: 'Leads In Process', xtype: 'inprogressList' ] , initialize: function( eOpts ) var store = Ext.getStore('InProgressLeads'); store.on('load', function () var listCount = store.getCount(); console.log(listCount); // set the badge here ); );

在这里,我在主视图中定义面板的按钮: id: 'lipPanel', title: 'Leads In Process', iconCls: 'team', items: [ xtype: 'inprogressPanel' ] ,

我读过我可以给按钮一个 ID,然后我可以使用 ID 来获取对按钮的引用,但是当我以这种方式定义按钮时,我还没有找到任何方法来指定按钮的 ID在主面板中。还是有其他方法来获取按钮并设置徽章文本?

更新:这里是设置徽章的方法:

<code>
      store.on('load', function () 

        var listCount = store.getCount(); 
        var apptabbar = Ext.getCmp('ext-tabbar-1');
        var tab = apptabbar.down('.tab[title=Leads In Process]');
        tab.setBadgeText(listCount);            

      );
</code> 

【问题讨论】:

【参考方案1】:

试试这个:

Ext.getCmp('lipPanel').setBadgeText(listCount);

【讨论】:

不,这不起作用:未捕获类型错误:未定义不是函数 对不起..我还没有看到你的整个代码......可能是你的代码有问题......正如你所说的 id: 'lipPanel', title: ' Leads In Process', iconCls: 'team', items: [ xtype: 'inprogressPanel' ] ,有一个按钮。然后你需要在这里发布你的按钮的 id...b'coz 在我的代码中有一个面板的 id,它不起作用。只需尝试用你的按钮的 id 替换 'lipPanel' 并确保在初始化事件时,必须创建并激活包含按钮的视图。 Natik,用于定义按钮的所有内容都已发布。主要从主视图定义在sn-p中。 inprogressPanel 中有一些冗余代码。我已经在 inprogressPanel 中注释掉了 title 和 iconCls: 'team'。那么他们我将如何定义带有 id 的按钮? 见.. 你想要按钮上的徽章文本,所以你必须在面板中的某处定义一个按钮,例如 xtype: 'button', id: 'badgeBtn', itemId: 'badgeBtn'。对?所以你只需要把你想要徽章文本的那个按钮的 id 放在上面。简单! 我尝试在 InProgressPanel、配置或主视图中定义按钮。在任一情况下,按钮都会替换面板视图中的列表。似乎以某种方式替换工具栏按钮的按钮应该在定义 lipPanel 的主视图中定义,但可能不是在它的项目列表中。你有一个有效的例子吗?谢谢。【参考方案2】:

获取对标签栏的引用,然后通过按钮的名称获取对按钮的引用。 var apptabbar = Ext.getCmp('ext-tabbar-1'); var tab = apptabbar.down('.tab[title=Leads In Process]'); tab.setBadgeText(listCount);

【讨论】:

这就是 Naitik 的回答,他说你应该使用你按钮的 id,应该接受它,而不是基于它一个不同的答案。

以上是关于使用 Sencha Touch 在商店加载后设置徽章文本的主要内容,如果未能解决你的问题,请参考以下文章

如何从加载的商店 sencha touch 中删除额外参数

sencha touch load store 手动

如何在 Sencha Touch 中的商店之间同步

Sencha Touch : 刷新商店内容

来自 JSON 商店的 Sencha Touch Carousel

商店排序后 Sencha Touch Pull to Refresh 不起作用