2017-12-27 30 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 repo를 설치하고 문제에 연결할 수있는 기회가 있습니까? https://github.com/ReedCopsey/Gjallarhorn.Bindable/issues –

+0

또한 버튼을 클릭 할 때마다 2 배속으로 인쇄됩니까? –

답변

3

이것은 a bug입니다. Gjallarhorn.Bindable Beta 6에서 수정되었습니다.

문제는 프레임 워크가 바인딩에서 관찰 가능 항목을 두 번 구독했기 때문입니다. 일반적으로 괜찮 으면 좋겠지 만, 당신의 경우 관측 대상에는 부작용이있어 여러 차례 실행됩니다. 프레임 워크에서 여러 구독을 방지하기 위해이 작업을 처리하는 방법을 수정 했으므로 최신으로 업그레이드하면 더 이상 두 번 실행하지 않아야합니다.