我正在使用 Sencha 的 GXT 3.0 使用通过 XTemplate (html/css) 定义的自定义渲染来渲染 ListViewCustomAppearance。当事物是只读的或当交互发生在列表级别(即项目选择,项目取消选择)时,它工作得很好。
如何将鼠标事件添加到模板标记中定义的元素?我的最终目标是在列表中的项目内有一个可点击的元素。事件处理程序将在 java 中。
请让我知道这是否以错误的方式进行。
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
一个很好的例子,说明如何粗略解决这个问题。它被设计得足够抽象,可以重用,但这也往往使它成为一个更糟糕的例子。