2013-04-03 3 views
3

Я использую extjs. Мне нужно получить отдельные данные из магазина в соответствии с требованиями. В моем магазине содержится единственный список не вложенный список, в котором есть регионы, такие как AMERICAS, Северное море и SE Asia. в этой области у него есть значения subRegion, сосудName и сосуда. Мне нужно получить уникальное значение, основанное на регионе, bacasue содержит много дубликатов записей. Я пробовал, как показано ниже, но он не работает. Может ли кто-нибудь связаться со мной, как достичь?. очень ценится. Спасибо.Как получить уникальные/отличительные данные из магазина?

var vesselStore=Ext.getStore('VesselStatusReportStore'); 
     var arr=new Array(); 
     var obj;  
     vesselStore.each(function(rec,index) 
     { 
      obj=new Object(); 
      if(rec.get('region')=='AMERICAS'){ 
       obj.subRegionAmerica=rec.get('subRegion'); 
       obj.vesselNameAmerica=rec.get('vesselName'); 
       obj.vesselTypeAmerica=rec.get('vesselType'); 
      } 
      if(rec.get('region')=='NorthSea'){ 
       obj.subRegionNorthSea=rec.get('subRegion'); 
       obj.vesselNameNorthSea=rec.get('vesselName'); 
       obj.vesselTypeNorthSea=rec.get('vesselType'); 
      } 
      if(rec.get('region')=='SE Asia'){ 
       obj.subRegionSEAsia=rec.get('subRegion'); 
       obj.vesselNameSEAsia=rec.get('vesselName'); 
       obj.vesselTypeSEAsia=rec.get('vesselType'); 
      } 
      arr.push(obj); 
      console.log(obj); 
     }); 

Json:

[ { 
    "region" : "AMERICAS", 
    "startDate" : null, 
    "subRegion" : "US", 
    "vesselName" : "Thoma-Sea � Hull #147", 
    "vesselType" : "PSV" 
    }, 
    { 
    "region" : "AMERICAS", 
    "startDate" : null, 
    "subRegion" : "US", 
    "vesselName" : "Thoma-Sea � Hull #148", 
    "vesselType" : "PSV" 
    }, 
    { 
    "region" : "AMERICAS", 
    "startDate" : null, 
    "subRegion" : "Mexico", 
    "vesselName" : "Thoma-Sea � Hull #148", 
    "vesselType" : "PSV" 
    }] 

ответ

1

Этот раздел не имеет смысла:

  obj=new Object(); 
      if(rec.get('region')=='AMERICAS'){ 
       obj.subRegionAmerica=rec.get('subRegion'); 
       obj.vesselNameAmerica=rec.get('vesselName'); 
       obj.vesselTypeAmerica=rec.get('vesselType'); 
      } 
      if(rec.get('region')=='NorthSea'){ 
       obj.subRegionNorthSea=rec.get('subRegion'); 
       obj.vesselNameNorthSea=rec.get('vesselName'); 
       obj.vesselTypeNorthSea=rec.get('vesselType'); 
      } 
      if(rec.get('region')=='SE Asia'){ 
       obj.subRegionSEAsia=rec.get('subRegion'); 
       obj.vesselNameSEAsia=rec.get('vesselName'); 
       obj.vesselTypeSEAsia=rec.get('vesselType'); 
      } 
      arr.push(obj); 

Вы в основном говорят «Какой бы ни была область, копировать запись в obj, а затем добавить, что obj на мой массив».

Я считаю, что вы имели в виду нечто большее, вдоль этих линий:

var vesselStore=Ext.getStore('VesselStatusReportStore'); 
var iRegions = []; 

vesselStore.each(function(rec,index) 
{ 
    var iRegionName = rec.get('region'); 

    // Make sure theres a array item with the region name, 
    // if not create a blank array; 
    iRegions[ iRegionName ] = iRegions[ iRegionName ] || []; 

    // Add the record to its corresponding array item. 
    // (If you don't want the full record, you can just get the 
    // fields individually like you did in your code). 
    iRegions[ iRegionName ] = rec; 
} 
console.log(iRegions); 
4

Похоже, что вы хотите использовать Collect. http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.Store-method-collect

vesselStore.collect('region')

+0

Thanq для вашего ответа. Я попробовал containerStore.collect ('region'). он даст уникальный регион и sburegion и т. д. но мне нужно, основываясь на регионе, я могу получить уникальную субрегион, тип судна и имя судна. У меня есть вопрос с json. ты можешь видеть. не получая, как принять. любой может помочь мне. как достичь? –

Смежные вопросы