更新seaside中的嵌入组件,而不刷新整个页面



我有一个组件(ItemTree),它有3个嵌入的组件。第一个(ItemTreeList)是要选择的项目列表。第二个(ItemGIDE)显示所选项目的属性。

在ItemTreeList上进行新选择时,我如何告诉ItemGIDE更新

首先,这比我想象的要复杂。ItemTreeList具有节点类型和节点实例的层次结构。它有可折叠的div,当单击顶级层次结构项或下面的实例时,将在其他对象上设置各种变量。所以,一次点击就会发生很多事情。我让ItemTreeList在不刷新整个页面的情况下自行更新。只需要向需要刷新的另一个组件(ItemGIDE)"公告"(再次,不刷新整个页面)。

  • 我手头有Jquery和Ajax
  • 我正在使用Visualage Smalltalk 8.5.0Seaside 3.0。-我一直在考虑打电话给ItemTree要更新其子组件
  • 我一直在考虑使用"announce'"到"announce"到其他要更新的组件
  • 我曾经做实际编程不到6个月

《使用Seaside进行动态Web开发》一书包含了关于JQuery的一章草稿。在那里,你可以找到一个名为"更换组件"的部分,其中有一个你要求的例子:

OuterComponent>>renderContentOn: html
  html div
    id: (id := html nextId);
    with: child.
  html anchor
    onClick: ((html jQuery id: id) load
      html: [ :r | 
        child := OtherComponent new;
        r render: child ]);
    with: 'Change Component'

代码显示了外部组件的呈现方法。它假设组件有一个名为child的变量,该变量是用初始渲染中显示的组件初始化的。此外,它假设组件有一个名为id的变量,该变量在渲染期间设置,以记住渲染子组件的目标DOM节点。在锚点的AJAX回调中,用OtherComponent new替换子组件,并重新呈现目标节点的内容。

最新更新