2015-10-05 4 views
0

Я закончил заявку, и я нахожусь в процессе минимизации. Когда я создаю приложение, я получаю дубликаты компонентов. Я заметил это, когда тестировал приложение. Всякий раз, когда у меня есть сетка, есть еще один, который окрашивается под него с теми же точными атрибутами. Я использовал Ext.ComponentMgr.all.map, чтобы увидеть все компоненты моего приложения. Когда я это сделал, я заметил, что в незастроенной версии было 1 компонент приложения, а у minified было 2. Сначала я думал, что могу отнести это к предупреждениям или ошибки в нестрочной версии. Но когда я запускаю его в chrome/IE, я не вижу никаких консольных предупреждений или ошибок.sencha app build, производя дублирующие компоненты

Есть ли способ сообщить, что вызывает эту ошибку? Ниже приведено мое основное представление, которое вызывается в файле Viewport.js. каждый из этих представлений соответствующим образом определяет соответствующие псевдонимы.

Ext.define('MPL.view.MPLView', { 
extend: 'Ext.container.Container', 
requires: [ 
    'Ext.grid.Panel', 
    'MPL.view.QuotePanelView', 
    'MPL.view.SearchPanelView', 
    'MPL.view.PartsPanelView', 
    'MPL.view.SvcPartsPanelView', 
    'MPL.view.ConsumedPartsView' 
], 
xtype: 'app-main', 
layout: 'column', 
overflowY: 'auto', 
items: [ 
    { 
     xtype: 'SearchPanel', 
     columnWidth: 1 
    }, 
    { 
     xtype: 'QuoteGrid', 
     columnWidth: 1, 
     overflowY: 'auto', 
     height: 200 
    }, 
    { 
     xtype: 'PartGrid', 
     overflowY: 'auto', 
     columnWidth: 1, 
     height: 250, 
     margin: '20 0 0 0', 
     hidden: true 
    }, 
    { 
     xtype: 'SvcPartsGrid', 
     overflowY: 'auto', 
     columnWidth: 1, 
     height: 250, 
     margin: '20 0 0 0', 
     hidden: true 
    }, 
    { 
     xtype: 'ConsumedPartsGrid', 
     overflowY: 'auto', 
     columnWidth: 1, 
     height: 250, 
     margin: '20 0 0 0' 
    } 
], 
listeners: { 
    ..... 
}}); 

Это то, что мой app.js выглядит следующим образом:

Ext.Loader.setConfig({ 
enabled : true 
}); 

Ext.application({ 
name : 'MPL', 

extend : 'MPL.Application', 

appFolder : 'app', 

requires : [ 'overrides.Theme' ], 

controllers : [ 'MPLController' ], 
models : [ 
    'MPLModel', 
    'SearchCriteriaModel', 
    'PartsModel', 
    'LaborCodeModel', 
    'PartFieldsModel', 
    'SourceModel', 
    'PartsActionModel', 
    'ConsumedPartsModel' 
], 
stores : [ 
    'MPLStores', 
    'SearchCriteriaStore', 
    'PartsStore', 
    'LaborCodeStore', 
    'PartFieldsStore', 
    'SourceStore', 
    'PartsActionStore', 
    'ConsumedPartsStore' 
], 

autoCreateViewport : true 
}); 

Я поставил console.logs и сделал beforerender слушателей на сетках, которые получают дублируются. Опять же, в миниатюрной версии я вижу два журнала на консоли, а в un-minified я вижу только один.

Все еще борется это - вот пример одной из сетей, которая получает дублируется

Ext.define('MPL.view.QuotePanelView', { 
alias: 'widget.QuoteGrid', 
extend: 'Ext.grid.Panel', 
id: 'QuotePanel', 
store: 'MPLStores', 
columns: [ 
    { header: MPL.str.getQuoteIdHeader(), dataIndex: 'quoteId', flex: .9}, 
    { header: MPL.str.getManufacturerHeader(), dataIndex: 'manufacturer', flex: 1.2}, 
    { header: MPL.str.getVinHeader(), dataIndex: 'vin', flex: 2}, 
    { header: MPL.str.getYearHeader(), dataIndex: 'year', flex:.8}, 
    { header: MPL.str.getMakeHeader(), dataIndex: 'make', flex: 1}, 
    { header: MPL.str.getModelHeader(), dataIndex: 'model', flex: 1}, 
    { header: MPL.str.getSalesIdHeader(), dataIndex: 'salesPersonId', flex: 1.23}, 
    { header: MPL.str.getCustIdHeader(), dataIndex: 'customerId', flex: 1}, 
    { header: MPL.str.getQuoteStatusHeader(), dataIndex: 'status', flex: 1}, 
    { header: MPL.str.getCreatedDateHeader(), dataIndex: 'createdOn', dateFormat: "Y-m-d", flex: 2} 
], 
listeners: { 
    itemclick: function(dv, record, item, index, e) { 
     MPL.app.fireEvent("FindParts", dv, record, item, index, e); 
    }, 
    beforerender: function(component, eOpts){ 
     console.log(' id - ' + component.getId()); 
    } 
} 
}); 
+0

Какие предупреждения приводятся во время сборки в командной строке? –

+0

Я вообще не получаю никаких предупреждений. Моя консоль зеленая. Я позаботился о том, чтобы избавиться от всех конечных запятых, всего – herms

ответ

0

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

beforerender: function(component, eOpts){ 
     if(!alreadyRendered){ 
      alreadyRendered = true; 
      previousComponent = component; 
     } 
     else{ 
      previousComponent.removeAll(true); 
     } 
    }