2012-11-25 84 views
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)函數的參數?如何在氮中調用erlang函數?

回答

5

你將要用回發來做到這一點。

最簡單的方法是改變你的按鈕,包括postback屬性:

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

然後,你必須處理與event/1功能回傳:

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

但是,如果你想通過這些值以及某種動態數據,您可以通過以下兩種方法之一來完成此操作。

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)您可以通過值作爲輸入(比如文本框或下拉框)

首先,添加你的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} 
    ]. 

然後在您的event/1函數中,我們將檢索這些值並調用您的函數。

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

您可以在

閱讀更多關於氮回傳和提交數據