Сенсорный контроллер Sencha, открывающий вид

Я пытаюсь понять, почему, когда я нажимаю представление на элемент управления Ext.Navigation.View, представление, которое я нажимаю, визуализируется, а данные, которые я нажимаю, - нет. Представление отображает очень простой элемент управления DataView с некоторыми данными json (имя и фамилия).

Это сработает, если я создам представление явно через «Ext.Create» (см. закомментированные строки в контроллере), но я уверен, что делал это раньше, когда вы можете нажать «xtype» представления и любые соответствующие свойства /данные для представления. Я прав?

Кстати, я проверил json, возвращающийся из обратного вызова отправки формы, и все в порядке. Просто кажется, что представление не хочет отображать данные, которые я отправляю как часть «push». Вот мой код. Я что-то пропустил?:

Вид:

Ext.define('MyCo.Booking.view.PatientClinicSearchResults', {
extend : 'Ext.DataView',
xtype : 'DataViewPatientSearchResults',

itemTpl : '{Name}',
store : {
        fields : ['Name'],
        autoLoad : true
    }

})

Контроллер:

Ext.define('MyCo.Booking.controller.Main', {
extend: 'Ext.app.Controller',

config: {
    refs: {
        navViewClinics : 'NavViewClinics',
        formPanelClinicPatientSearch : 'FormPanelClinicPatientSearch'
    },
    control: {
        'NavViewClinics list' : { 
            itemtap : 'ClinicUserSearch'
        },

        'FormPanelClinicPatientSearch button' : {
            tap : 'ClinicPatientSearchResults'
        }
    }
},

ClinicUserSearch : function(list, index, element, record) {
    this.getNavViewClinics().push({ xtype : 'FormPanelClinicPatientSearch' });
},

ClinicPatientSearchResults : function(button, e) {
    var form = this.getFormPanelClinicPatientSearch();
    var navClinics = this.getNavViewClinics();

    form.submit({
        success : function(form, result) {

        // var view = Ext.create('MyCo.Booking.view.PatientClinicSearchResults', {
        //     title : 'Search Results',
        //     fullscreen: true,
        //     store: {
        //         fields: ['Name'],
        //         data : result.items
        //     },

        //     itemTpl: '<div>{Name}</div>'
        // });

        // navClinics.push(view);

        navClinics.push({ xtype : "DataViewPatientSearchResults", 
          title : 'Test',
           store : { 
                    data : result.items 
            }
        });

        }
    });        
}

});

JSON, полученный от обратного вызова отправки формы:

{
"success" : true,
"items" :   [
                {
                "Name": "Jon",
                "Surname": "Doe"
                },
                {
                "Name": "Karl",
                "Surname": "Doe"
                }
            ]
}

Любая помощь будет оценена по достоинству. Спасибо.


person user2241336    schedule 03.04.2013    source источник


Ответы (1)


Задача решена. Я удалил объявление магазина из представления, и это сработало. Просто нужно сослаться на данные через свойство itemTpl.

person user2241336    schedule 04.04.2013