我有一个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);
},
我的控制台准确地吐出了我需要放在下一页的图像对象中的值,但我似乎无法将此信息推送到记录中,或者从我的详细信息页面中提取变量“avatar” 。我的详细信息页面(注释):
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 - 不起作用,因为头像不是记录的一部分而是一个变量。
我知道这必须是一件非常简单的事情,但是这个简单的东西阻碍了这个节目。任何帮助,将不胜感激。
答案 0 :(得分: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);
},