2013-01-31 9 views
6

Tworzę changelog i ja zdecydowaliśmy się załadować mój changelog z .html plikuŁadowanie pliku HTML po stronie serwera w treści panelu

Mam

Ext.define('MeridianCRM.dialogs.recentСhanges.recentСhanges', { 
    extend : 'Ext.window.Window', 
    title : 'Последние изменения на сайте', 
    modal : true, 
    height : 400, 
    width : 500, 
    resizable : false, 
    html: 'changes.html', 

    buttons: [{ 
     text: 'Закрыть', 
     handler: function() { 
      this.up('window').close(); 
     } 
    }] 
}); 

Jak mogę rozwiązać to ? (html: 'changes.html') Jak mogę załadować html do mojego okna?

Odpowiedz

5

Musisz ładować html asynchronicznie, a następnie wstrzyknąć go do swojego komponentu. Więc:

Ext.Ajax.request({ 
    url: 'changes.html', 
    success: function(response){ 
     // response.responseText will have your html content 
     // you can then feed it into your component using update() 
    } 
}); 

Więc jeśli deklarują Państwo komponent z id:

Ext.define('MeridianCRM.dialogs.recentСhanges.recentСhanges', { 
    extend : 'Ext.window.Window', 
    title : 'Последние изменения на сайте', 

    id:  : 'my-log', 

    ... 
}); 

Można wtedy zrobić:

Ext.Ajax.request({ 
    url: 'changes.html', 
    success: function(response){ 
     Ext.getCmp('my-log').update(response.responseText); 
    } 
}); 

Można `integrować” go do swojego panelu tak:

Ext.define('MeridianCRM.dialogs.recentСhanges.recentСhanges', { 
    extend : 'Ext.window.Window', 
    title : 'Последние изменения на сайте', 

    id:  : 'my-log', 

    listeners: { 
     'render': function() 
      { 
       Ext.Ajax.request({ 
        url: 'changes.html', 
        success: function(response){ 
         Ext.getCmp('my-log').update(response.responseText); 
        } 
       });     
      } 
    } 

    ... 
}); 

Pamiętaj jednak, że yo możesz mieć problemy, jeśli zwrócony znacznik HTML zawiera tag <head> (jak strona extjs ma już).

+0

Jak mogę zintegrować go z moją klasą 'MeridianCRM.dialogs.recentształów odchyleń.recentС? – davetoxa

+0

Nie mam z tym problemu, changes.html zawiera tylko tagi 'li'. – davetoxa

+0

Zaktualizowano odpowiedź. – Izhaki

9

Jest lepsze rozwiązanie, które wykorzystuje deklarację loader config panelu:

loader: { 
    url: 'changes.html', 
    autoLoad: true 
}, 

co spowoduje w tym kodzie globalnym.

Ext.define('MeridianCRM.dialogs.recentСhanges.recentСhanges', { 
    extend : 'Ext.window.Window', 
    title : 'Последние изменения на сайте', 
    modal : true, 
    height : 400, 
    width : 500, 
    resizable : false, 
    loader: { 
     url: 'changes.html', 
     autoLoad: true 
    }, 
    buttons: [{ 
     text: 'Закрыть', 
     handler: function() { 
      this.up('window').close(); 
     } 
    }] 
}); 

Jest to korzystne, ponieważ nie musimy zdefiniować listener, ani Ext.Ajax połączenia.

+1

+1 Ponieważ napisałem klasy ładujące! –

Powiązane problemy