Определите повторно используемый компонент - PullRequest
1 голос
/ 04 августа 2011

1-я использовал следующий код для определения повторно используемой сетки, но когда я делаю экземпляр, ни одна конфигурация в определении класса также не имеет эффекта взлома кодаКакова причина?3- Есть ли какие-либо ограничения в объявлении конфигурации класса?2- Как я могу сделать некоторые столбцы по умолчанию в классе сетки и добавить еще несколько столбцов к его объектам?Спасибо

    Ext.define("IBS.users.Grid", {
    extend: "Ext.grid.Panel",
    config:{
        selType:'checkboxmodel',        //not work
         dockedItems:[/* items */],      //break
        multiSelect:true,
        features: [
            {
                groupHeaderTpl: '{name}',
                ftype: 'groupingsummary'
            },
            {
                ftype:'filters',
                encode: false, // json encode the filter query
                local: true
            }
        ],

         viewConfig: {      //not work
             stripeRows: true,
            filterable:true,
            loadMask: false
        },
        listeners : {
            itemdblclick: function(dv, record, item, index, e) {
                console.log(arguments);
            }
        }
    },
    constructor:function(config) {
        this.callParent(arguments);
        this.initConfig(config);
   //        this.self.instanceCount++;
    }
 }); 

1 Ответ

0 голосов
/ 04 августа 2011

1-я использовал следующий код для определения сетки многократного использования, но когда я делаю экземпляр, ни один конфиг в определении класса также не имеет эффекта взлома кода.В чем причина?

Я могу ответить, почему ваш конфиг не имеет эффекта.Потому что config, который передается в cunstructor , не является вашей конфигурацией по умолчанию.Вы должны применить свою конфигурацию по умолчанию, чтобы конфигурация по умолчанию имела эффект:

constructor:function(config) {
  config = Ext.applyIf(config, this.config);
  this.callParent(arguments);
  this.initConfig(config);
}

Однако я не знаю, почему dockedItems:[/* items */] нарушает код.Может быть, у вас есть синтаксические или логические ошибки где-то внутри /* items */.

2- Как я могу сделать некоторые столбцы по умолчанию в классе сетки и добавить еще несколько столбцов к его объектам?

Это легко.Просто переопределите вашу функцию initComponent:

Ext.define("IBS.users.Grid", {
  extend: "Ext.grid.Panel",
  // ...
  initComponent : function(){
    if (!this.columns) {
      // default columns:
      this.columns = [{
        dataIndex: 'dkjgkjd',
        // ...
      }];
      // if we passed extraColumns config
      if (this.extraColumns)
        for (var i=0; i < this.extraColumns.length; i++)
          this.columns.push(this.extraColumns[i]);
    }

    this.callParent(arguments);
  },
  // ...
});

3- Есть ли какие-либо ограничения в объявлении конфигурации класса?

Я не знаю ни о каком.Однако я бы не рекомендовал объявлять object config в определении класса.Например:

Ext.define("IBS.users.Grid", {
  extend: "Ext.grid.Panel",
  bbar: Ext.create('Ext.toolbar.Toolbar', // ...
  // ...
});

Все будет в порядке с первым экземпляром класса.Но когда вы создаете второй экземпляр, bbar ссылается на тот же объект, что и первый экземпляр.И поэтому bbar исчезнет из первой сетки.
Вместо этого объявите конфиги объекта в initComponent.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...