Smalltalk Seaside在javascript中调用组件

Smalltalk Seaside在javascript中调用组件,smalltalk,seaside,Smalltalk,Seaside,我有一个带母版详细信息页的海滨应用程序。母版页有一个由tr记录列表组成的表。当用户单击特定的tr元素时,我想调用一个细节组件,它将显示单个记录的数据 因为我不能用callback创建tr元素,也不能让它包含带有回调的锚点,所以我希望tr的onClick属性包含一些javascript,它将调用:subcomponent。当我尝试此操作时,我得到一个错误,提示call:只能用于回调和任务 使用ajax是一种变通方法,但是它会打断后退按钮 编辑: 更一般地说,我想知道如何为各种javascript事

我有一个带母版详细信息页的海滨应用程序。母版页有一个由
tr
记录列表组成的表。当用户单击特定的
tr
元素时,我想调用一个细节组件,它将显示单个记录的数据

因为我不能用
callback
创建
tr
元素,也不能让它包含带有回调的锚点,所以我希望
tr
onClick
属性包含一些javascript,它将
调用:subcomponent
。当我尝试此操作时,我得到一个错误,提示
call:只能用于回调和任务

使用ajax是一种变通方法,但是它会打断后退按钮

编辑:


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

嗯,您不能在tr元素中渲染组件,但可以在其td子元素中添加一些锚或其他元素

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

然后,我将一个dblclick处理程序绑定到执行类似document.location=$(this.find('.dblclick.action').get(0.href

我现在还没有接近Smalltalk图像来为您提供源代码,但我希望您能理解:您不需要使用Ajax来单击特定行中的链接,而是让浏览器导航到与该行中的链接关联的回调。您可以说,您使用tr.的dblclick处理程序来单击链接,然后让普通的Seaside工作。没有魔法。你可以找到更多的信息

如果不希望锚点可见,则可以尝试使锚点不可见(显示:无)等

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


我希望这对你有帮助

嗯,您不能在tr元素中渲染组件,但可以在其td子元素中添加一些锚点或其他元素

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

然后,我将一个dblclick处理程序绑定到执行类似document.location=$(this.find('.dblclick.action').get(0.href

我现在还没有接近Smalltalk图像来为您提供源代码,但我希望您能理解:您不需要使用Ajax来单击特定行中的链接,而是让浏览器导航到与该行中的链接关联的回调。您可以说,您使用tr.的dblclick处理程序来单击链接,然后让普通的Seaside工作。没有魔法。你可以找到更多的信息

如果不希望锚点可见,则可以尝试使锚点不可见(显示:无)等

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


我希望这对你有帮助

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

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

为什么您的TR不能包含锚定?Html不允许整个表行包含一个锚定,只有
td
s可以包含锚定。为什么您的TR不能包含锚定?Html不允许整个表行包含一个锚定,只有
td
s可以包含锚定。这种方法对我有效。谢谢此外,我将锚设置为没有文本装饰,并更改了其字体,使其看起来不像锚。这种方法对我很有效。谢谢此外,我将锚设置为没有文本装饰,并更改了其字体,使其看起来不像锚。