将自定义值(并获取它)设置为Ext.view.View的每个项目(XTemplate)

时间:2011-12-17 00:57:52

标签: extjs

我想为Ext.view.View的每个项目添加一个自定义值,这是一个窗口名称,当点击该项目时应该打开它。

我正在阅读API文档,我发现只有如何设置自定义函数,如果我也设置自定义属性会出现问题吗?

感谢您的任何建议

我在读什么:http://docs.sencha.com/ext-js/4-0/#!/api/Ext.XTemplate

修改1:

Ext.define('MyApp.view.desktop.Icons', {
  extend: 'Ext.view.View',
  alias : 'widget.iconsdataview',

  tpl: Ext.create('Ext.XTemplate',
    '<tpl for=".">',
    '<div class="mfo-view">',
    '<img src="{image}" alt="{image}" />',
    '<p>{title}</p>',
    '</div>',
    '</tpl>'
  ),

  itemSelector: 'div.mfo-view',
  store: 'Icons',
  style: 'margin: 2em;',
  overItemCls: 'mfo-view-over',
  trackOver: true
});

我想做这样的事情:

tpl: Ext.create('Ext.XTemplate',
        '<tpl for=".">',
        '<div class="mfo-view">',
        '<img src="{image}" alt="{image}" />',
        '<p>{title}</p>',
        '</div>',
        '</tpl>',
        mycustomproperty: '{property}'
      ),

然后在itemdblclick事件(伪代码)

itemdblclick(obj, ...) {
    openMyWindow(obj.mycustomproperty);
 }

希望这有帮助

2 个答案:

答案 0 :(得分:0)

我在EXTJS 4.中没有多少工作。大部分都是3.3但我相信你可以做到以下几点:

tpl: Ext.create('Ext.XTemplate',
        '<tpl for=".">',
        '<div class="mfo-view">',
        '<img src="{image}" alt="{image}" />',
        '<p>{title}</p>',
        '</div>',
        '</tpl>',
        { mycustomproperty: '{property}'
}
      ),

答案 1 :(得分:0)

似乎我想要的东西是不可能的,因为模板创建的对象是htmlelement,你必须做Ext.get才能使它们成为元素,实际上将它们用作ExtJS对象。

我通过使用itemdblclick方法的索引访问商店来解决。

修改1:

更好的是,您可以使用记录参数访问该项目,而无需使用索引。