2012-10-09 110 views
0

To Opa在那裏,我一直對這個問題感到困惑。Opa:將變量傳遞給迭代中的事件處理程序

我想在我的視圖中做的是遍歷由我的Model數據調用返回的DBSet,生成記錄的XHTML表,每個綁定到單擊事件處理程序。 我想要這個點擊事件處理程序接受迭代記錄類型的屬性作爲參數或記錄本身。 type team = { string team_id, ...etc} 我在我的視圖中有一個窗體,我想用最近單擊的表​​格行的值來填充輸入,這就是事件處理程序所做的事情---如果我甚至可以獲得傳遞給它的正確參數。

我該如何解決這個問題?

我試圖得到一點XHTML的綁定一個事件處理這樣

<tr onclick={ otherExposedFunctionIWantToCall(team) }> 

<tr onclick={ otherExposedFunctionIWantToCall(team.team_id) }> 

有一個問題我已經使出做最新的東西,是想看看如果我可以訪問我在自定義類型,團隊中設置的team_id屬性。

function teams_management_view(){ 
    tbody = Iter.fold(
      function(team, acc){ 
      <>{acc}<tr onclick={ function(_){ Log.info("click", {team.team_id})}}><td class="team_id">{team.team_id}</td><td class="team_name">{team.name}</td></tr></> 
      }, 
      TeamModel.get_teams(), 
      <></> 
     ) 
    ... 
} 

當我在迭代代碼中使用它們時,這些事件處理程序的這些形式都無法編譯。

爲什麼這不起作用? 是我用動態記錄迭代的問題嗎? 我可以將這樣的功能綁定到事件嗎?
做Opa客戶端事件有任何方式來訪問事件的目標 - 似乎沒有找到任何? 實現我的目標有哪些選擇?

如果有人能幫助我理解這個問題的任何部分,我會非常感激!

回答

0

傻乎乎的,事實證明我完全沒有注意到團隊變量完全處於函數範圍內(即傳遞給迭代器)的事實。

原來,我不是鑄造TEAM_ID,這是一個int領域,作爲一個字符串...

我發現這個工程:

<tr onclick={ function(_){ setTeamView("{team.team_id}")} }> 

然而,這種不停地給我一個錯誤從之前,

Expression has type 
    void 
    but is coerced into 
    FunAction.t 

<tr onclick={ setTeamView("{team.team_id}")}> 

您的自定義功能在一個匿名封裝函數最好包裹起來第一,在我給第一個例子是顯而易見的。 team.team_id的字符串轉換隻能在第一種情況下使用。

對我來說,下一個!

相關問題