2013-03-21 74 views
0

首先,我正在使用GXT 2.2.5和GWT 2.3。获取XTemplate中数组的大小

我有一个ListView显示用户生成的项目。我希望它显示已经输入的项目,或者如果商店是空的,则显示“没有项目连接”的单行。

我想我可以在模板中使用“tpl if”标签,但是如何确定商店的尺寸以进行比较?

换句话说,我在下面的“尺寸”中使用了什么值?

<tpl if="size == 0"> 
    <p>No Items attached</p> 
</tpl> 
<tpl if="size > 0"> 
    <tpl for ="."> 
    ... 
    </tpl> 
</tpl> 

谢谢!

回答

0

GXT 2 XTemplates基于JavaScript,因此使用length(而不是键入size)来代替保留JavaScript数组大小的属性的名称。在GXT 3中,XTemplates被重写为可以与任何Java对象一起工作,所以期待您在这里编写的大小方法。

http://www.sencha.com/examples-2/#listview修改模板:

private native String getTemplate() /*-{ 
    return ['<tpl if="length == 0">', 
       'nothing to show', 
      '</tpl>', 
      '<tpl if="length != 0">', 
       '<tpl for=".">', 
        '<div class="thumb-wrap" id="{name}">', 
         '<div class="thumb"><img src="{path}" title="{name}"></div>', 
         '<span class="x-editable">{shortName}</span>', 
        '</div>', 
       '</tpl>', 
       '<div class="x-clear"></div>', 
      '</tpl>' 
    ].join(""); 
}-*/; 
+0

这个我试过,但我遇到的问题是,ListView控件没有正确更新。代码从一个空的商店开始,所以它正确显示空行。我添加一条记录,并相应地改变。但是当我删除记录时,ListView不会切换回emptry版本。 – NestorDRod 2013-03-28 19:55:24

+0

问题是,当商品从商店中被移除时,listview会尝试变得聪明,并且不会重新运行整个模板 - 它只是将已移除的元素切片。考虑向存储中添加一个remove事件监听器,并且如果该项计数== 0,然后调用store.clear()以使其重新运行? – 2013-03-29 18:19:38