-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%.
Run Code Online (Sandbox Code Playgroud)
如何通过单击按钮调用imafunction(Param1,Param2)函数及其参数?
你想要用回发来做这件事.
最简单的方法是更改按钮以包含postback属性:
#button { id=calcButton, text="Click", postback=do_click}.
Run Code Online (Sandbox Code Playgroud)
然后你必须使用event/1函数处理回发:
event(do_click) ->
imafunction("first val","second val").
Run Code Online (Sandbox Code Playgroud)
但是,如果您希望将值与某种动态数据一起传递,则可以使用以下两种方法之一.
1)您可以将其作为回发的一部分传递,并在回发值上进行模式匹配.
#button { id=calcButton, text="Click", postback={do_something,1,2} }
Run Code Online (Sandbox Code Playgroud)
然后在回发上进行模式匹配
%% Notice how this is matching the tuple in the postback
event({do_something,Param1,Param2}) ->
imafunction(Param1,Param2).
Run Code Online (Sandbox Code Playgroud)
或者,2)您可以将值作为输入传递(比如文本框或下拉框)
首先,添加您的param字段以发送,并确保您的按钮进行回发
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}
].
Run Code Online (Sandbox Code Playgroud)
然后在你的event/1函数中,我们将检索值并调用你的函数.
event(do_other_thing) ->
Param1 = wf:q(param1),
Param2 = wf:q(param2),
imafunction(Param1,Param2).
Run Code Online (Sandbox Code Playgroud)
您可以在此处阅读有关氮回发和提交数据的更多信息