2017-12-21 6 views
1

나는 시각화를 생성하는 작은 Purescript 응용 프로그램을 작성 중입니다. 그러나 제 아키텍처는 다소 비 전통적입니다. 몇 가지 문제가 있습니다.펄프 psci에서 할로겐 응용 프로그램 편집 및 실행

  1. 시작 pulp psci -- --port 8080 및 브라우저
  2. 전화 시각화의 정의를 받아
  3. 결과를 참조 일부 컨트롤과 함께 그것을 렌더링 기능 go 연결 : 여기에 내가 원하는거야. REPL로 돌아가서 새로운 정의를 만들 수 있습니다.
  4. 2 단계로 이동하여 go으로 새 시각화를 그립니다.

이런 종류의 작품은 지금까지 가지고있는 것들과 작동하지만, 내 문제는 go에 대한 반복 된 호출이 DOM의 내용을 대체하지 않고 그 대신에 추가된다는 것입니다. 이것은 몇 번의 호출 후에 모든 컨트롤과 모든 것을 많은 복사본을 갖게된다는 것을 의미합니다.

나는 이것이 약간의 해킹이라는 것을 알고 있지만, 이런 종류의 대화 형 인터페이스를 제공하는 유일한 방법은 편집자/구문 분석기를 구현하는 것인데, 너무 많은 작업이 있습니다. 이것을 피할 수있는 방법이 있습니까?

가 여기 내 내가 변화하는 요구를 상상 go의 정의입니다 : 실험의 많은

go :: Vis -> Eff (HA.HalogenEffects()) Unit 
go vis = HA.runHalogenAff do 
    body <- HA.awaitBody 
    runUI checks vis body 

답변

0

, 나는 적어도 하나의 겉으로는 합리적인 해결 방법은 명시 적짜리 아이 노드를 삭제하는 것을 발견했다. 나는 백그라운드에서 무슨 일이 벌어지고 있는지를 알지 못한다. (나는 무의미한 프로세스를 실행하고 있는가?) 그러나 이것은 내 목적을 위해 작동한다 :

go :: VVis -> Eff (HA.HalogenEffects()) Unit 
go vis = HA.runHalogenAff do 
    body <- HA.awaitBody 
    let nb = htmlElementToNode body 
    _ <- H.liftEff $ whileJust 
    (firstChild (htmlElementToNode body)) 
    (\n -> removeChild n (htmlElementToNode body)) 
    runUI checks vis body