2012-05-11 3 views
0

Есть ли способ расширить приложение в другом приложении для mdi? Для примера. У меня есть 3 приложения: «Транзакция», «SalesOrder» & «PurchaseOrder» Я хочу повторно использовать транзакцию, расширив ее в «SalesOrder» & «PurchaseOrder». Какой чистый способ сделать это?Расширение Extjs 4 для mdi

ответ

1

Просто вы можете определить application с определенным именем, а затем extend.

BaseApp.js:

Ext.application({ 
    name: 'BaseApp', 
    launch: function() { 
     alert("Base App Launch"); 
    } 
}); 

ChildApp.js:

Ext.application({ 
    //extend from base app 
    extend: 'BaseApp', 
    name: 'ChildApp', 
    launch: function() { 
     alert("Child App Launch"); 
    } 
}); 
0

Да, это возможно, так как ExtJS 4.2.

Проверьте раздел документации 'Выведение из Ext.app.Application' в http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.app.Application

Вот небольшой пример:

Ext.define('Transaction.Application', { 
    extend: 'Ext.app.Application', 
    requires: [], 

    // application namespace 
    name: 'Transaction', 

    // name of the app instance in DOM (e.g. Transaction.instance) 
    //appProperty: 'instance', 

    // application folder 
    appFolder: '/js/Transaction', 

    autoCreateViewport: true, 

    controllers: [ 
    ], 

    views: [ 
    ], 

    launch: function() { 
     console.log('application started'); 
    } 
}); 

Ext.define('SalesOrder.Application', { 
    extend: 'Transaction.Application', 
    requires: [], 

    // application namespace 
    name: 'SalesOrder', 

    // application folder 
    appFolder: '/js/SalesOrder', 

    autoCreateViewport: false, 

    controllers: [ 
    ], 

    views: [ 
    ], 

    launch: function() { 
     Ext.create('Ext.container.Viewport'); 
     this.callParent(); 
    } 
}); 

Ext.define('PurchaseOrder.Application', { 
    extend: 'Transaction.Application', 
    requires: [], 

    // application namespace 
    name: 'PurchaseOrder', 

    // application folder 
    appFolder: '/js/PurchaseOrder', 

    autoCreateViewport: false, 

    controllers: [ 
    ], 

    views: [ 
    ], 

    launch: function() { 
     Ext.create('Ext.container.Viewport'); 
     this.callParent(); 
    } 
}); 

Ext.application('PurchaseOrder.Application'); 

// Then you can acces your application instance anywhere: 
var app = PurchaseOrder.getApplication();