2

其中一个较小的项目需要功能更改......所以我决定也更新 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)

这是图书馆的错误还是我错过了什么?

4

1 回答 1

3

这是一个错误。它已在Gjallarhorn.Bindable Beta 6中得到纠正。

问题是框​​架在绑定中订阅了 observable 两次。这通常很好,但在您的情况下,observable 有一个副作用,它会运行多次。我重新设计了框架中的处理方式以防止多次订阅,因此如果您升级到最新版本,它不应再触发两次。

于 2017-12-28T22:06:57.640 回答