2015-01-16 4 views
3

Я использую ExtJS 5.1, я хотел бы вызвать метод в ViewController Вот мой Вид:Extjs 5.1: метод в ViewController не вызывается

Ext.define("bdociTabletProto.view.main.Main", { 
extend: "Ext.container.Container", 
requires: ['bdociTabletProto.view.main.MainController'], 
controller: "mainController", 

initComponent: function() { 
    var me = this; 
    me.layout = "border"; 
    .... 
    me.items = [...]; 
    me.listeners = { 
     afterlayout: 'onMainAfterLayout', 
     scope: 'controller' 
    }; 
    me.callParent(arguments); 
} 
}); 

и вот ViewController где я реализую onMainAfterLayout метод:

Ext.define("bdociTabletProto.view.main.MainController", { 
extend: 'Ext.app.ViewController', 
alias: 'controller.mainController', 

onMainAfterLayout: function (container) { 
    var me = this; 
    var docNavigator = me.getView().docNavigator; 
    var workflowActions = me.getView().workflowActions; 
    docNavigator.setHeight(container.getHeight()); 
    docNavigator.setWidth(container.getWidth()/4); 
    workflowActions.setPosition((container.getWidth() - workflowActions.getWidth())/2, 0); 
} 
}); 

это генерирует исключение: [Е] Ext.util.Event.getFireInfo(): Невозможно динамически разрешить простор для "afterlayout" слушателя на доб-Comp-1010

Впервые я написал слушателя без области видимости, но после поиска проблемы я обнаружил, что в новой версии Extjs (5.1) я должен установить свойство Scope.

Без установки свойства области видимости, ошибка так: Uncaught Ошибка: метод под названием «onMainAfterLayout» на bdociTabletProto.view.main.Main

Любой может помочь мне пожалуйста ?? Спасибо

ответ

4

Я нашел решение:

  • Добавить это в ViewController

    control: { '#': { afterlayout: 'onMainAfterLayout' } },

  • удалить слушателей с точки зрения

+0

Refenrece для этого решения можно найти в Слушателях и событиях Домены: http://docs.sencha.com/extjs/5.1/application_architecture/view_controllers.html – hyponym

Смежные вопросы