Seaside: обратный вызов Ajax, а затем добавление элемента, отображаемого сервером?


Моя цель состоит в том, чтобы создать пункт меню (a span), который при нажатии делает три вещи. Во-первых, он устанавливает какое-то государство на сервер (addTurn), затем он создает новый элемент (renderEmptyTurnOn) на сервере и отправляет это к клиенту. Затем клиент, получив новый элемент, добавляет его к определенному элементу с помощью класса #zdTurns. Я хочу только одного. сервер туда и обратно.

Приведенный ниже код не работает, так как renderEmptyTurnOn ожидает холст, но я передаю ему сценарий. вместо.

Есть идиоматические способ сделать это с помощью ванили побережье и в jQuery?

renderMenuOn: h
    h div
        class: 'zdDialogMenu';
        with: [ 
                    h span
                        onClick:
                                (h jQuery ajax
                                        callback: [ self dialog addTurn ];
                                        script: [ :s | s << ((s jQuery class: #zdTurns) append: (s jQuery html: (self renderEmptyTurnOn: s))) ]);
                        with: 'Add Turn' ]
1 3

1 ответ:

Ты почти прибил его. Аргумент сообщения append: в экземпляре jQuery принимает объект визуализации. Это может быть строка, морской компонент или блок. Это означает, что вы можете сделать это следующим образом:

renderMenuOn: h
  h div
    class: 'zdDialogMenu';
    with: [ 
       h span
          onClick: (h jQuery ajax
                        script: [ :s | 
                                 self dialog addTurn.
                                 s << ((s jQuery class: 'zdTurns') append: [:r | self renderEmptyTurnOn: r ]) ]);
          with: 'Add Turn' ]