2017-12-27 2665 views
3

其中一個較小的項目需要功能更改...所以我決定更新Gjallarhorn.Bindable.Wpf庫的版本。可通過命令調用的函數獲取調用次數

實際上,我只是在需要的地方添加了一個附加參數。

但是現在應用程序無法正常工作,因爲可以通過命令調用的函數獲得兩次調用。

最小例子如下:

type Message = |Number of int 

let rand = Random() 
let mbindings _ source _ = 
    let getNumber() = 
     let number = rand.Next() 
     printfn "RAND = %A" number //print a number twice 
     number |> Some 
    [ 
     Bind.Explicit.createCommand "NewNumber" source 
     |> Observable.map (fun _ -> getNumber()) 
     |> Observable.toMessage Number 
    ] 

let mcomponent : IComponent<int, obj, Message> = 
    Component.fromExplicit mbindings 

let app nav = 
    let model = 42 
    let update message _ = 
     match message with 
     |Number number -> number 
    Framework.application model update mcomponent nav 

...

let nav = Navigation.singleView Application MainWin 
let app = app nav.Navigate 
Framework.RunApplication (nav, app) 

它是一個錯誤在圖書館或我錯過了什麼?

+1

這可能是一個錯誤。任何機會,你可以建立一個github回購和鏈接到一個問題? https://github.com/ReedCopsey/Gjallarhorn.Bindable/issues –

+0

此外 - 每次點擊按鈕時是否打印2x? –

回答

3

這是a bug。已在Gjallarhorn.Bindable Beta 6中更正。

問題在於框架在綁定中訂閱了兩次observable。這通常很好,但在你的情況下,observable有一個副作用,它會多次運行。我重新修改了在框架中如何處理這些內容以防止多次訂閱,因此如果升級到最新版本,它不應再觸發兩次。