2013-07-31 2 views
2

В моем приложении у меня есть окно просмотра с одним элементом, основным видом, который представляет собой простой класс, простирающийся от Ext.container.Container.ExtJS 4.2.1 - Не удается получить экземпляр экземпляра с контроллера

У меня тоже есть главный контроллер, и я пытаюсь получить экземпляр представления, поэтому динамически могу нажимать соответствующие элементы, если пользователь зарегистрирован или нет.

Я пробовал использовать представления: ['MainView'], refs [{селектор: 'thextype'}] и т. Д. Без везения.

Я использовал ссылку (ref) в sencha touch, чтобы делать такие вещи, можете ли вы помочь мне с Extjs v4.2?

Для уточнения, я не пытаюсь получить элемент DOM, я пытаюсь получить экземпляр представления с помощью связанных методов.

Спасибо заранее,

ответ

1

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

Я добавил в методе инициализации линии, как:

var openCrmDashboardFn = Ext.Function.bind(this.onOpenCrmDashboard, this); 

и она работала.

Спасибо!

4

Определить xtype вашего зрения:

xtype: 'mainview' 

, а затем в контроллере:

requires: ['...'] // your view class 
// ... 
refs: [{ 
    ref: 'mainView', 
    selector: 'mainview' // your xtype 
}] 

, а затем вы можете получить экземпляр вашей точки зрения в контроллер с this.getMainView()

1

Я пробовал это без хорошего результата s. То, что я пытаюсь сделать, это нечто подобное. На основании вашего ответа следует работать

Ext.define('MyApp.view.MainView', { 
extend: 'Ext.container.Container', 
alias: 'widget.mainContainer', 
cls: ['mainContainer'], 
items: [ 
    { 
     xtype: 'panel', 
     items: [ 
      { 
       html: "my view" 
      } 
     ] 
    } 
]}); 

Ext.define('MyApp.controller.MainController', { 
extend: 'MyApp.controller.BaseController', 
refs: [ 
    { 
     ref: 'mainContainer', 
     selector: 'mainContainer' 
    } 
], 

init: function() { 
    this.getApplication().on({ 
     openDashboard: this.onOpenDashboard 
    }); 
}, 
onOpenDashboard: function() { 
    var mainContainerView = this.getMainContainer(); 
    mainContainerView.showSomething(); //mainContainerView should be an instance of the view. 
}}); 

Где событие openDashboard запускается, если после успешного входа в систему.

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