2015-07-24 2 views
0

Я расширил определение магазина:ExtJS 4.2.1 не может изменить модель из ПЕРЕОПРЕДЕЛЕН магазина

Ext.define('IMStore', { 
    extend : 'Ext.data.Store', 
    proxy : { 
    type : 'ajax', 
    url : '.im.read', 
    reader : { 
     root : 'item' 
    } 
    } 
}); 

и я называю это так:

var gridStore = Ext.create('IMStore',{ 
    model : type 
}); 

и это работает КИ первых время я называю это. Если впоследствии я снова вызову Ext.create('IMStore',{model : type }) с другим значением type, кажется, что новый экземпляр Store имеет ту же модель, что и первая, которую я создал, хотя я передал другое значение.

Кажется, что, возможно, прокси-сервер должен быть воссоздан, если модель изменена? Любые идеи?

ответ

2

Поскольку конфигурация прокси объявляется непосредственно в качестве члена IMStore класса, он получает перезаписаны прокси экземпляра после его создания в первой IMStore инстанции. Вот почему первый созданный экземпляр прокси затем делится между всеми IMStore экземплярами. Первая модель разделяется также потому, что она связана с прокси.

Чтобы избежать этого, переместить определение прокси внутри конструктора:

Ext.define('IMStore', { 
    extend: 'Ext.data.Store', 
    constructor: function() { 
     this.proxy = { 
      type: 'ajax', 
      url: '.im.read', 
      reader: { 
       root: 'item' 
      } 
     }; 
     this.callParent(arguments); 
    } 
}); 
+2

Обратите внимание, что это ограничение не применяется в 5.x и выше. –

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