Доб с JS: во избежание дублирования


У меня ext_scaffold (question.js). Когда я щелкните строку, я получаю ответы на этот вопрос, так

'rowselect': function(sm, row, rec) {
    store = new Ext.data.Store({
        proxy: new Ext.data.HttpProxy({
        url: '/answers/index_all_for_question_id/' + rec.data.id + '?format=ext_json',
        method: 'GET'}),
        reader: new Ext.data.JsonReader({
        root: 'answers',
        id: 'id',
        totalProperty: 'results'
      }, [ 
        {name: 'text', mapping: 'answer.text'},
        {name: 'email', mapping: 'answer.respondent.email'}                             
          ])
    });

    grid = Ext.getCmp('answers_grid');            
    grid.reconfigure(store, new Ext.grid.ColumnModel([ 
                {id: 'text', header: "Answer ↓", width: 500, sortable: true, dataIndex: 'text'},          
                {id: 'email', header: "Email", width: 300, sortable: true, dataIndex: 'email'}    
          ]));
    grid.store.load();

    scaffoldPanel.selectedRecordId = rec.data.id;
    scaffoldPanel.getFormPanel().getForm().loadRecord(rec);
}

и у меня есть другой файл, где админ сетки (ответ):

 var answers_datastore = new Ext.data.Store({
     autoLoad: true,
    proxy: new Ext.data.HttpProxy({
        url: '/answers/index_all_for_question_id/<%= @questions.first.id %>?format=ext_json',
        method: 'GET'}),
    reader: new Ext.data.JsonReader({
        root: 'answers',
        id: 'id',
        totalProperty: 'results'
      },[ 
      {name: 'text', mapping: 'answer.text'},
      {name: 'email', mapping: 'answer.respondent.email'}
      ])
    });

    var answersGrid = new Ext.grid.GridPanel({
    id: 'answers_grid',
    store: answers_datastore,
            frame: true,
        columns: [
          {id: 'text', header: "Answer &darr;", width: 500, sortable: true, dataIndex: 'text'},
          {id: 'email', header: "Email", width: 300, sortable: true, dataIndex: 'email'}
        ],
         listeners: {
             rowdblclick: function(answersGrid, rowI, event)   {
            Ext.MessageBox.show({                
                title:            "Answer" ,
                   msg:             "A",
                closable:         true,
                   autowidth:        true       
           });    
             }
         },

        stripeRows: true,
        title:'Answers'
    });

Как избежать дублирования?



1217
4
задан 21 апреля 2011 в 12:04 Источник Поделиться
Комментарии
1 ответ

Проблема с ваш вопрос заключается в том, что код больше напоминает конфиг, чем кодирование, и нет ничего плохого кроме того, что это не сухой между этих 2 файлов.

Похоже, что доб с JS поддерживает требуется начиная с версии 4, так что вам просто нужно выделить общую логику/config в файле, который вы будете требовать в обоих местах.

3
ответ дан 27 января 2014 в 08:01 Источник Поделиться