2017-03-07 5 views
0

Wie zu prüfen, wurde "ID" -Feld des Modells von ExtJs (6) hinzugefügt und generiert oder es existiert tatsächlich am Back-End?Prüfung wurde ExtJs-Modell-ID generiert oder nicht

Ich bin mit Gittern und json Speicher für verschiedene Daten zu erhalten und erzeugen Spalten für Raster dynamisch wie folgen aus:

 store.load(function(records, operation, success) { 
      if(success) 
      { 
      //console.log('Store loaded records',records,store); 
      if(records.length) 
      { 
       var columns = _.map(records[0].data,function(value, key){ 
       return {text:key,dataIndex:key}; 
       }); 
       me.reconfigure(store,columns); 
      }else{ 
       me.reconfigure(store,[{text:"no records",dataIndex:"no records"}]); 
      } 
      } 
      else 
      console.log('Store NOT loaded'); 
     }); 

Und ich will nicht automatisch generierte Feld „id“, angezeigt wird, müssen aber noch zu zeige es an, wenn es "echt" ist.

Ich habe versucht, Modell-Eigenschaft des Speichers mit benutzerdefinierten IDProperty zu definieren - aber es sieht aus wie in diesem Fall nicht funktionieren nur Wirkung hat es verschwunden ist Textpräfix "extModelxxx-" aus generierten ID-Wert, aber es hat immer noch „id“ Name, kein Name, den ich in idProperty angegeben:

{ 
     reference:"dataDisplay", 
     xtype:"grid", 
     store:{ 
     type:"json", 
     proxy:{ 
      type: 'ajax', 
      url: '',//will be set dynamically 
      reader: { 
      type: 'json', 
      rootProperty: 'value' 
      }, 
     }, 
     model: Ext.create("Ext.data.Model",{ 
      //fields:["extJsAutoId"],//no effect 
      idProperty:"extJsAutoId",//null,//null does not work too 
     }), 
     }, 
     columns: [], 
     listeners:{ ....... 

Nur so kann ich jetzt sehen, ist json von mir zu laden und dann Array-Speicher verwenden.

Ich habe Geige für diese Frage: https://fiddle.sencha.com/#view/editor&fiddle/1rj5

und wie Sie auf dem Screenshot siehe unten - "Phantom" Eigenschaft ist immer falsch, so dass es hier helfen kippt:

enter image description here

Antwort

0

Sie können Überprüfen Sie die phantom Eigenschaft des Datensatzes, es bedeutet, dass es keine ID vom Server zugewiesen wurde.

Man könnte dies eine Spalte Renderer erreichen mit:

{ 
    text: 'ID', 
    dataIndex: 'id', 
    renderer: function(v, meta, rec) { 
     return rec.phantom ? '' : v; 
    } 

} 
+0

ich Check Phantom prop versucht, aber es ist immer falsch, war egal ‚id‘ Feld erzeugt wird, oder es wurde vom Server empfangen. –

+0

schauen Sie bitte hier: https://fiddle.sencha.com/#view/editor&fiddle/1rj5 wie Sie sehen in der Konsole in beiden Fällen Phantom == false –

+0

Oh, kommen sie von einer Remote-Quelle ohne eine ID? –

Verwandte Themen