2017-03-07 68 views
0

如何检查是由ExtJs(6)添加和生成的模型的“id”字段还是实际存在于后端?检查是否生成ExtJs模型ID

我使用网格和JSON商店获取的各种数据和生成列电网动态如下:

 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'); 
     }); 

而且我不希望显示自动生成的字段“ID”,但仍需要显示它,如果它是'真实的'。

我试图用自定义idProperty定义商店的模型属性 - 但它看起来在这种情况下不起作用, 只影响它已经消失的文本前缀“extModelxxx-”从生成的id值,但它仍然有我在idProperty指定的“ID”的名字,而不是一个名字:

{ 
     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:{ ....... 

我只看到现在的方式是自己加载JSON,然后用数组存储。

我创建捣鼓这个问题: https://fiddle.sencha.com/#view/editor&fiddle/1rj5

,当你在下面的截图看到 - “幻影”属性始终是假的,所以它不能帮助这里:

enter image description here

回答

0

你可以检查记录的phantom属性,这意味着它没有被服务器分配一个id。

您可以使用此列渲染器实现:

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

} 
+0

我试图检查幻影道具,但它总是假的,不管是生成的“ID”字段,或者从服务器接收。 –

+0

看这里请: https://fiddle.sencha.com/#view/editor&fiddle/1rj5 正如你在控制台中看到的两种情况下phantom == false –

+0

哦,他们来自没有ID的远程源? –