1

我有一个发送到详细信息表单的煎茶触摸列表,没有问题 - 除了一个:

我需要将存储记录中的变量传递到详细信息页面(图像),但在此之前我需要“清理”其中的路径。为了保持代码干净,我这里只贴相关部分。这是我的清单:

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 : "..."
    };

Title 和 Job Title 自动进入,因为它们是表单字段并且记录已被推送。在化身中,我无法想出一种读取信息的方法。

record.data.avatar - 不起作用,因为头像不是记录的一部分,而是一个变量。

我知道这一定是一件非常简单的事情,但正是这些简单的事情支撑了这场演出。任何帮助,将不胜感激。

4

1 回答 1

0

将 itemId 赋予 personAvatar

 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);
},
于 2013-08-28T10:45:09.793 回答