海边在javascript中调用组件

时间:2014-01-07 13:31:28

标签: smalltalk seaside

我有一个海报应用程序,其中包含一个主要详细信息页面。母版页有一个表,其中包含tr条记录列表。当用户单击特定的tr元素时,我想调用一个详细信息组件,该组件将显示单个记录的数据。

由于我无法使用tr生成callback元素或者包含带回调的锚点,我希望tr的{​​{1}}属性包含一些javascript哪个onClick。当我尝试这个时,我收到错误call: subcomponent

使用ajax是一种解决方法,但它会破坏后退按钮。

编辑:

更一般地说,我想知道如何为各种javascript事件设置回调行为。感谢。

2 个答案:

答案 0 :(得分:2)

好吧,你不能在tr元素中渲染一个组件,但你可以在其中一个td子元素中添加一些锚点或其他元素。

对于我的项目,我大致做了以下几点:我使用特殊的css类为每一行添加了一个锚点,例如: “.dblclick行动”。这个锚点有一个正常的Seaside回调。

然后我将dblclick处理程序绑定到tr元素,该元素执行类似document.location = $(this).find('。dblclick.ction')。get(0).href;

我现在不接近Smalltalk图像来为您提供源代码,但我希望您明白这一点:您不使用Ajax单击该特定行中的链接,而是让浏览器导航到回调与该行中的链接相关联。您可以说使用tr。的dblclick处理程序单击链接,然后让正常的Seaside内容完成其工作。没有魔法。您可以找到更多信息here

如果您不希望锚点可见,您可能需要尝试使锚点不可见(显示:无)等。

如果你对实验更加友好,你也可以尝试在服务器上保存回调并使用回调id作为tr元素的属性呈现其url,并使用dblclick处理程序跟踪你提取的属性的链接查询中使用attr()的属性值。

我希望这对你有所帮助。

答案 1 :(得分:2)

我忘了回答你的初步问题:你不能发出一个电话:来自javascript。但是您可以使用document.location技巧使用我在第一个答案中描述的技术重新/滥用现有链接到页面上的回调。