2017-07-14 58 views
1

我得到了以下DOM結合:如何找出,爲什麼DOM綁定渲染兩次

object Modals { 

    val modals = Var[Modal](null) 

    def show(modal: Modal) = modals.value = modal 
    def hide(modal: Modal) = modals.value = null 

    @dom 
    def apply() = { 
    if (modals.bind != null) { 
     <!-- Some static HTMLElements --> 
     ... This is called twice ... 
    } 
    } 
} 

雖然展示-方法僅調用一次(我有雙帶調試輸出檢查的話) ,元素被渲染兩次,所以我得到錯誤消息,HTMLElements不能被插入DOM兩次。

什麼是最好的方法來找出,爲什麼綁定重新計算兩次?我不知道如何調試這...對我來說,它只取決於一個Var,這只是改變一次...

回答

1

打印堆棧跟蹤可能有助於跟蹤源,例如你可以放置下面的一段代碼在.bind聲明

new RuntimeException("...").getStackTrace.take(10).map(println)

而且下,好老println.bind語句(特別是如果你有一個以上的)有助於理解發生了什麼。