我有一个组件(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
替换子组件,并重新呈现目标节点的内容。