2014-01-10 2 views
3

Я пытаюсь разработать приложение с вызовом REST Servive из Sencha с помощью Ext.Ajax.Sencha View не меняется по событию Click

Я успешно могу получить ответ, но когда я пытаюсь загрузить другой вид, ничего не происходит.

Я взял ссылку this link.

App.js

Ext.application ({ имя: 'epsoft',

requires: [ 
    'Ext.MessageBox', 
    'Ext.Ajax', 
    'Ext.Container' 
], 

views: [ 
    'Main','admin','login', 
], 

launch: function() { 
    // Destroy the #appLoadingIndicator element 
    Ext.fly('appLoadingIndicator').destroy(); 

    // Initialize the main view 
    Ext.Viewport.add(Ext.create('epsoft.view.login')); 
}, 

)}

Под LoginController.js

Ext.Msg.alert('title', 'Failure'); 
Ext.Viewport.add(Ext.create('epsoft.view.admin')); 

Всплывающее окно Msg подходит правильно, но новый вид не загружается.

ответ

2

Вы должны установить новый вид как activeitem для просмотра, попробуйте этот

Ext.Viewport.setActiveItem (Ext.Viewport.add ({xtype: 'админ'}));

Здесь я предполагаю, что admin - это xtype вашего следующего вида.

+0

Спасибо Ram, это также работает. Но не могли бы вы рассказать мне, в чем разница между двумя? это поможет мне лучше понять. – Akshay

+0

Это рекомендуемый метод, с помощью viewport добавляет теги div для представления, которое вы пытаетесь создать, которое является общим для обоих наших ответов, но в вашем случае представление, которое вы хотите показать, находится в фоновом режиме, вы уничтожаете текущий вид (активный элемент текущего видового экрана), который показывает только что созданный вид. Проблема с этим подходом заключается в том, когда вы пытаетесь вернуться назад, в этом случае вы не можете, так как вы уничтожили представление, которое вы хотите показать при возврате. Надеюсь, я был бы ясен, если бы не выяснил –

0

Я не уверен, что это правильный способ сделать это, но я стараюсь это:

Пусть говорят ваши login.js имеет идентификатор в конфигурации части, похожие на примере ниже:

Ext.define('epsoft.view.login', { 
    extend: 'Ext.Container', 
    xtype: 'login', 
    config: { 
     id: 'loginForm', // here is ID 
     items: [ 
        . . . 
       ] 
    } 
}); 

затем под вашим loginController.js, вы можете запустить новый вид на:

var paneltab = Ext.create('epsoft.view.admin'); //Mention the view name to launch 
Ext.getCmp('loginForm').destroy(); // Destroying the ID 
Ext.Viewport.add(paneltab); // add to the ViewPort 

Надежда это будет полезно.

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