Почему обратный вызов не выполняется? - Болтовня

Я делаю веб-приложение, которое добавляет видео с YouTube в плейлисты. Выбор отображается рядом с эскизами видео, содержащими текущие списки воспроизведения пользователя, и когда пользователь нажимает кнопку отправки, текущее видео должно быть добавлено в выбранный список воспроизведения. Однако я столкнулся с проблемой, когда обратный вызов, похоже, не выполняется. Прошу прощения, если ответ тривиален, потому что я не вижу, откуда исходит проблема:

html form with: 
    [html select with:
                     self session getPlaylists keysDo:
                     [:k | html option value: k; with: [html text:k]]];
                 callback: [:v | self session addVideo: ((searchRes at: 'items') 
                                 at: (i*2+x)) toPlaylist: v. Transcript show: 'call'].
    html break.
    html submitButton class:'tiny button';value: 'Add to Playlist']

Извините, код немного запутан. По сути, обратный вызов не выполняется (я знаю это, потому что «вызов» не печатается в стенограмме при отправке формы). Любое разъяснение приветствуется.


person Chris Phillips    schedule 05.11.2014    source источник
comment
Вы используете море? Можете ли вы воспроизвести проблему с простой формой и выбрать? Почему бы вам не использовать WASelectTag>>list: для передачи объектов и WASelectTag>>label для указания блока меток для каждого элемента (намного чище).   -  person Max Leske    schedule 06.11.2014


Ответы (1)


Потому что блок with: находится не в том месте. В Seaside with: является последним сообщением в каскаде при использовании холста html.

Более подробно:

WATagBrush>>with: anObject
"Render anObject into the receiver. Make sure that you call #with: last in the cascade, as this method will serialize the tag onto the output document."

    self openTag.
    super with: [
        self before.
        canvas render: anObject.
        self after ].
    self isClosed
        ifFalse: [ self closeTag ]

где супер - это вызов WABrush>>with:

WABrush>>with: 
    with: aBlock
    canvas nest: aBlock.
    closed := true

поэтому обратный вызов никогда не записывается в ответном документе, который сервер отправляет вашему браузеру.

person Stephan Eggermont    schedule 06.11.2014