1

我正在使用 Sencha 的 GXT 3.0 使用通过 XTemplate (html/css) 定义的自定义渲染来渲染 ListViewCustomAppearance。当事物是只读的或当交互发生在列表级别(即项目选择,项目取消选择)时,它工作得很好。

如何将鼠标事件添加到模板标记中定义的元素?我的最终目标是在列表中的项目内有一个可点击的元素。事件处理程序将在 java 中。

请让我知道这是否以错误的方式进行。

4

1 回答 1

1

ListViewCustomAppearance当您想要完全重组子 dom 时很有用,而不仅仅是每个子的绘制方式。通过其中之一,您将接管决定如何处理选择的责任(请参阅com.sencha.gxt.widget.core.client.ListViewCustomAppearance.onSelect(XElement, boolean)方法)。

这很重要,因为ListView已经知道如何管理选择!ListViewSelectionModel您可以在其自身上设置和配置一个ListView来处理各种交互,并可以在那里侦听事件。

相反,考虑只做一个自定义Cell(可能从AbstractCell类开始),以您希望的方式呈现您的数据。覆盖该render方法以指定如何附加新内容。

还有一个提示——这个ListViewSelectionModel想法可能不适合你,这取决于你试图获得什么样的用户交互数据。相反,还可以考虑覆盖该onBrowserEvent方法 - 这将为您提供已修改项目的模型对象、对渲染内容根目录的引用(来自您的render方法)以及事件本身。使用事件对象查看发生了什么(针对字符串事件类型测试 event.getType())。子类化时AbstractCell,还需要将感兴趣的事件传递给超类的构造函数。

看看ActionCell一个很好的例子,说明如何粗略解决这个问题。它被设计得足够抽象,可以重用,但这也往往使它成为一个更糟糕的例子。

于 2012-10-23T02:04:34.813 回答