2013-01-31 26 views
6

Tôi đang tạo changelog và tôi đã quyết định để tải changelog của tôi từ file .htmltải một file html phía máy chủ vào nội dung của một bảng điều khiển

Tôi đã có

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(); 
     } 
    }] 
}); 

Làm thế nào tôi có thể giải quyết điều này? (html: 'changes.html') Làm cách nào tôi có thể tải html vào cửa sổ của mình?

Trả lời

5

Bạn sẽ cần tải html không đồng bộ, sau đó tiêm nó vào thành phần của bạn. Vì vậy:

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

Vì vậy, nếu bạn khai báo bạn thành phần với id:

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

    id:  : 'my-log', 

    ... 
}); 

Sau đó bạn có thể làm:

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

Bạn có thể 'tích hợp' nó vào bảng điều khiển của bạn như vậy:

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

    ... 
}); 

Lưu ý rằng, yo u có thể có vấn đề nếu html trả về chứa thẻ <head> (vì trang extjs đã có).

+0

Làm cách nào tôi có thể tích hợp nó vào lớp 'MeridianCRM.dialogs.recentСhanges.recentСhanges' của tôi? – davetoxa

+0

tôi không có vấn đề gì với nó, changes.html chỉ chứa các thẻ 'li' – davetoxa

+0

Đã cập nhật câu trả lời. – Izhaki

9

Có một giải pháp tốt hơn mà sử dụng tờ khai của loader config của bảng điều khiển:

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

mà sẽ cho kết quả trong mã toàn cầu này.

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(); 
     } 
    }] 
}); 

Đây là một lợi thế, bởi vì chúng ta không cần phải xác định một listener, cũng không phải một Ext.Ajax gọi.

+1

+1 Vì tôi đã viết các lớp bộ nạp! –

Các vấn đề liên quan