我有一个带有主细节页的海滨应用程序。母版页有一个由tr
记录列表组成的表。当用户单击特定的tr
元素时,我想调用一个详细组件,它将显示单个记录的数据。
由于我不能用callback
创建tr
元素,也不能让它包含一个带回调的锚,所以我希望tr
的onClick
属性具有一些将call: subcomponent
的JavaScript。当我尝试这个时,我得到了一个错误,说call: can only be used in callbacks and tasks
。
使用ajax是一种变通方法,但它会打断后退按钮。
编辑:
更一般地说,我想知道如何为各种JavaScript事件设置类似回调的行为。
好吧,不能在tr元素中呈现组件,但可以在其td子元素中添加一些锚点或其他元素。
对于我的项目,我大致做了以下操作:我用一个特殊的css类为每一行添加了一个锚,例如".dblclick action"。这个锚有一个普通的Seaside回调。
然后,我将dblclick处理程序绑定到tr元素,该元素执行类似document.location=$(this).find('.dblclick.ction').get(0).href;
我现在还没有接近Smalltalk图像来为您提供源代码,但我希望您明白这个想法:您不使用Ajax来单击该特定行中的链接,而是让浏览器导航到与该行中链接关联的回调。你可以说你使用tr.的dblclick处理程序来点击链接,然后让普通的Seaside东西来完成它的工作。那里没有魔法。你可以在这里找到更多信息。
如果你不想让锚点可见,你可以尝试让锚点不可见(显示:无)等等。
如果你对实验更友好,你也可以尝试在服务器上保存一个回调,并将其带有回调id的url呈现为tr元素的一个属性,并使用dblclick处理程序跟随该属性的链接,你可以使用attr()提取查询中属性的值。
我忘了回答您最初的问题:您不能从javascript发出调用。但是,您可以使用document.location技巧,使用我在第一个答案中描述的技术,重新/滥用页面上回调的现有链接。