4

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

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

首先,这比我想象的要复杂。ItemTreeList 具有节点类型和节点实例的层次结构。它具有可折叠的 div,当单击顶级层次结构项或下面的实例时,将在其他对象上设置各种变量。因此,只需单击一下即可发生很多事情。我已经让 ItemTreeList 自行更新而不刷新整个页面。只需向需要刷新的其他组件(ItemGIDE)“宣布”(同样无需刷新整个页面)。

  • 我手头有 Jquery 和 Ajax。
  • 我将 Visualage Smalltalk 8.5.0 与 Seaside 3.0 一起使用。-我一直在考虑调用 ItemTree 来告诉它的子组件更新?
  • 我一直在考虑用'announce'来'announce'其他组件来更新?
  • 我进行实际编程不到 6 个月?
4

1 回答 1

3

Dynamic Web Development with Seaside 》一书包含一个关于 JQuery 的草稿章节。在那里,您可以找到一个名为Replace a Component的部分,其中包含您要求的示例:

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为目标节点的内容并重新呈现。

于 2012-09-12T17:10:22.750 回答