Seaside:列表在更新时失去了内容

时间:2011-02-13 16:17:23

标签: ajax smalltalk seaside

这个很简单。我有一个<select>,我想根据选择更新一些内部状态。无需重新显示任何内容。问题是在选择和AJAX请求完成后,列表会丢失其内容。

renderContentOn: html
|value myId|
    html form with: [
        html select list: #('one' 'two' 'tree' 'four' 'five');
            id: (myId := html nextId);
            callback: [ :v | value := myId ];
            onChange: (
                html prototype updater
                    triggerFormElement: myId;
                    callback: [:h | value "do something with the value here"];
                    return: false
                ).
    ]

2 个答案:

答案 0 :(得分:3)

#updater需要要更新的元素的DOM ID。如果您未能提供ID,则默认为this,DOM元素触发事件。因此,您最终得到一个空列表。如果您不需要更新内容,则应使用#request代替#updater。如果您想更新某些内容,则需要使用#id:提供有效ID。

阅读Seaside Book的AJAX: Talking back to the Server部分,它详细解释了AJAX。

答案 1 :(得分:1)

因为更新程序用回调生成的内容替换了它所定义的元素的html,并且你的回调没有生成任何html,我认为列表是空的。