Детали касания Sencha из раскрытия

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

Мне нужно передать переменную из записи магазина на страницу сведений (изображение), но перед этим мне нужно «очистить» от нее пути. Чтобы сохранить код чистым, я буду вставлять сюда только соответствующие части. Это мой список:

var directoryList = Ext.create('Ext.List', {
        loadingText: "Loading Directory...",
        emptyText: "<div class='listing'>Nothing in the directory!</div>",
        minHeight:'90%',
        cls: 'subList',
        store: 'directoryStore',
        id:'directory_list',
        grouped: true,
        deferEmptyText: true,
        indexBar: true,
        onItemDisclosure : true,
        itemTpl: tpl,
        listeners: {
            disclose: {
                fn: this.onDirectoryListDisclose,
                scope: this
            },
            itemtap: {
                fn: this.onDirectoryListClick,
                scope: this
            }
        }
    });

Теперь мой контроллер содержит функцию, которая срабатывает правильно:

onMyRecordCommand: function(list, record) {
var activateRecord = this.getRecordContainer();
activateRecord.setRecord(record);
    var str = record.data.directory_avatar;
    var avatar = str.replace('{filedir_49}',"resources/images/");

    console.log(avatar);

    Ext.Viewport.animateActiveItem(activateRecord, this.slideLeftTransition);
},

Моя консоль выдает именно то значение, которое мне нужно поместить в объект изображения на следующей странице, но я не могу вставить эту информацию ни в запись, ни вытащить переменную «аватар» со своей страницы сведений. Моя страница с подробностями (с комментариями):

Ext.define("directory.view.DirectoryRecord", {
extend: "Ext.form.Panel",
requires: ["Ext.form.FieldSet","Ext.field.Hidden","Ext.Img"],
xtype: 'directoryRecord',
config:{
    scrollable:'vertical'
},

и т.д. и т.п. тогда...

    var personTitle = {
        xtype: 'textfield',
        name: 'title',
        label: 'Name',
        disabled:true
    };

    var personJobTitle = {
        xtype: 'textfield',
        name: 'directory_job_title',
        label: 'Job Title',
        disabled:true
    };

    var personAvatar = {
        xtype: 'image',
        mode: 'image',
        src : "..."
    };

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

record.data.avatar - не работает, т.к. аватар не часть записи, а переменная.

Я знаю, что это должно быть что-то совершенно простое, но именно на простых вещах и держится шоу. Любая помощь будет оценена по достоинству.


person user2724514    schedule 28.08.2013    source источник
comment
является ссылкой getRecordContainer на directoryRecord? а прямой родитель personAvatar — frompanel ?   -  person Viswa    schedule 28.08.2013
comment
personAvatar находится непосредственно в formpanel или в наборе полей?   -  person Viswa    schedule 28.08.2013
comment
getRecordContainer() — это метод, который вызывает мой контейнер Record Details. Затем я установил запись в этом представлении, и да, personAvatar находится в наборе полей. Общий вид расширяет form.Panel   -  person user2724514    schedule 28.08.2013
comment
дайте itemId набору полей и дайте мне знать   -  person Viswa    schedule 28.08.2013
comment
Смотрите, я обновил свой ответ   -  person Viswa    schedule 28.08.2013
comment
ты решил или нет?   -  person Viswa    schedule 29.08.2013
comment
Ext.ComponentQuery.query('#аватар')[0].setSrc(аватар); в итоге сделал это.   -  person user2724514    schedule 29.08.2013


Ответы (1)


Дайте itemId человекуАватар

 var personAvatar = {
        xtype: 'image',
        mode: 'image',
        itemId : 'avatar',
        src : ""
 }

В контроллере

onMyRecordCommand: function(list, record) {
   var activateRecord = this.getRecordContainer();
    activateRecord.setRecord(record);
    var str = record.data.directory_avatar;
    var avatar = str.replace('{filedir_49}',"resources/images/");    
    console.log(avatar);

     activateRecord.down('fieldset').getComponent('avatar').setSrc(avatar);

    Ext.Viewport.animateActiveItem(activateRecord, this.slideLeftTransition);
},
person Viswa    schedule 28.08.2013
comment
'Невозможно вызвать метод 'setSrc' of undefined', вот что я получаю, когда пробую это, хм - person user2724514; 28.08.2013