2013-12-15 69 views
1

不知道從哪裏開始尋找。sencha觸摸旋轉木馬不會刪除所有項目

我有我打開一個旋轉木馬時,我的後備存儲的刷新事件觸發:

Ext.define('Rb.store.Items', { 
     extend: 'Ext.data.Store', 
     requires: ['Rb.model.Item', 'Ext.data.proxy.Rest'], 
     config: { 
      storeId: 'itemstore', 
      model: 'Rb.model.Item', 
      proxy: { 
       type: 'rest', 
       url: '', 
       reader: { 
        type: 'json', 
        rootProperty: 'items' 
       } 
      }, 
      autoLoad: false, 
      listeners:{ 
       refresh: function(me, data, eOpts){ 
        console.log("refresh"); 
        var carousel = Ext.ComponentQuery.query('rbdetailcarousel')[0]; 
        carousel.removeAll(true); 
        console.log(carousel.getItems().getCount()); 
        data.each(function(rec){ 
         console.log(rec.data); 
         var rdcp = Ext.create('Rb.view.RbDetailCarouselPanel',{ 
                 cur_item: rec.data, 
                 style: 'background-image:url(resources/startup/320x460.jpg);background-repeat:no-repeat;', 
                }); 
         rdcp.items.get(1).setHtml(rec.data.name); 
         carousel.setActiveItem(rdcp); 

        }); 

        carousel.setActiveItem(0); 
       } 
      } 
     } 
    }); 

我的旋轉木馬是超級簡單:

Ext.define('Rb.view.RbDetailCarousel', { 
     extend: 'Ext.Carousel', 
     xtype: 'rbdetailcarousel', 
     config: { 
      itemId: 'rbdetailcarousel', 
     } 
    }); 

但是也有一些在這裏發生的兩件事情,是奇怪的:

  1. 當我打電話給carousel.getItems()。getCount()後,右後車ousel.removeAll(true),我總是得到1的返回值。如果我檢查旋轉木馬,旋轉木馬中還剩下一件物品(它看起來就像是指示器??)。

  2. 當我重裝店面,它清除了所有的項目除了第一個,讓我刷新越來越多,我得到的第一個項目的重複,那麼其餘的項目添加到末尾。看起來好像removeAll(true)沒有刪除第一個項目。

任何想法,我可以看看解決這個問題?我懷疑我沒有正確地抓住轉盤的引用,因爲我不應該將指示器作爲其中的一個項目取回,對吧?

感謝

+0

這條線是什麼意思? 'rdcp.items.get(1).setHtml(rec.data.name);' –

+0

@ThiemNguyen - 該行只是爲rdcp元素中包含的面板設置html。它使用當前記錄中的「名稱」字段來執行此操作。 – jb44

+0

確定錯誤確實在這裏。你可以請張小提琴,以便我可以幫忙嗎? https://fiddle.sencha.com –

回答

0

截至由OhmzTech暗示,並回答了在煎茶論壇上,我將項目添加到我的旋轉木馬其中有重複的itemId的。我仍然對這些標識符(以及它們被框架內部使用的擴展名)有些模糊,顯然你不希望有一個帶有重複子項itemIds的容器。