2
-module (blah).
-compile(export_all).
-include_lib("nitrogen_core/include/wf.hrl").

main() -> #template { file="./site/templates/bare.html" }.

title() -> "Welcome to Nitrogen".

body() ->
#button { id=calcButton, text="Click"}.

imafunction(Param1, Param2) -> %something here%.

ボタンをクリックして、パラメーターを指定して imafunction(Param1, Param2) 関数を呼び出すにはどうすればよいですか?

4

1 に答える 1

5

ポストバックでこれを行いたいと思うでしょう。

最も簡単な方法は、ボタンを変更してpostback属性を含めることです。

#button { id=calcButton, text="Click", postback=do_click}.

次に、ポストバックをevent/1関数で処理する必要があります。

event(do_click) -> 
    imafunction("first val","second val").

しかし、何らかの動的データとともに値を渡したい場合は、次の 2 つの方法のいずれかを実行できます。

1)ポストバックの一部としてそれを渡すことができ、ポストバック値でパターン マッチします。

#button { id=calcButton, text="Click", postback={do_something,1,2} }

そして、ポストバックでのパターンマッチ

%% Notice how this is matching the tuple in the postback
event({do_something,Param1,Param2}) ->
    imafunction(Param1,Param2).

または、2)値を入力として渡すことができます(テキストボックスまたはドロップダウンボックスなど)

まず、送信するパラメーター フィールドを追加し、ボタンがポストバックを実行することを確認します。

body() ->
    [
        #label{text="Param 1"},
        #textbox{id=param1},
        #br{},
        #label{text="Param 2"},
        #textbox{id=param2},
        #br{},
        #button{ id=calcButton, text="Click", postback=do_other_thing}
   ].

次に、event/1関数で値を取得し、関数を呼び出します。

event(do_other_thing) ->
    Param1 = wf:q(param1),
    Param2 = wf:q(param2),
    imafunction(Param1,Param2).

Nitrogen Postbacks と Submitting data の詳細については、次の URL を参照してください。

于 2012-11-25T09:46:47.560 に答える