4

3 つの埋め込みコンポーネントを持つコンポーネント (ItemTree) があります。最初の (ItemTreeList) は、選択する項目のリストです。2 番目 (ItemGIDE) には、選択したアイテムのプロパティが表示されます。

ItemTreeList で新しい選択が行われたときに ItemGIDE を更新するように指示するにはどうすればよいですか?

まず、これは私が考えているよりも複雑です。ItemTreeList には、ノード タイプとノード インスタンスの階層があります。折りたたみ可能な div があり、最上位の階層アイテムまたはその下のインスタンスをクリックすると、他のオブジェクトにさまざまな変数が設定されます。したがって、ワンクリックで多くのことが起こります。ページ全体を更新せずに ItemTreeList を更新しました。更新する必要があることを他のコンポーネント (ItemGIDE) に「アナウンス」する必要があります (ページ全体を更新せずに繰り返します)。

  • 私はJqueryとAjaxを手元に持っています。
  • Seaside 3.0 で Visualage Smalltalk 8.5.0 を使用しています。- ItemTree を呼び出して、そのサブ コンポーネントに更新を指示することを考えていますか?
  • 「アナウンス」を使用して他のコンポーネントに「アナウンス」して更新することを考えていましたか?
  • 実際のプログラミングを行ってから 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'

このコードは、外部コンポーネントの render メソッドを示しています。childコンポーネントには、最初のレンダリングに表示されたコンポーネントで初期化されるという変数があると想定しています。idさらに、コンポーネントには、子コンポーネントがレンダリングされるターゲット DOM ノードを記憶するためにレンダリング中に設定されるという変数があると想定しています。アンカーの AJAX コールバックで、子コンポーネントを置き換えてOtherComponent new、ターゲット ノードのコンテンツを再レンダリングします。

于 2012-09-12T17:10:22.750 に答える