2016-09-28 7 views
2

私の光り輝くアプリケーションで予期せぬ現象が発生しました。
私は、およそ200のコードの何千ものラインが減少している、さらに以下を参照してください、問題の原因となるパターンを壊すことなく、減らすことはできません。シャイニーモジュールの堅牢性を向上

gist for minimal example

コードの意図はボタン経由で動的にモジュールを呼び出すことができるようになりました+ insertUIでは、各モジュールはmodalDialog経由でデータをロードするユーティリティ関数を持っています。 'Load Data'ボタンがトリガーされると、データはreact_src()にフェッチされます。

しかし、私の試みでは、2つの大きな問題があります。モジュールは、「通話」ボタンがトリガされた最初の時間で動作

1)は、それが正しく第二の時間をレンダリングしようとしませんが[通話します]ボタンをクリックします。
ブラウザコンソールを見ると、重複したバインディングの問題が発生しているように見えます(さらにこの操作でアプリケーションをクラッシュさせてしまいます)。
奇妙なことに、私はmodalDialogをキャンセルし、直接再び[通話]ボタンをクリックしない場合、その後、何の結合の問題は、第二のトリガのためにありません、である第三のトリガーとなど

2)次のテストコードはしませんでしたユーザーが「プレースホルダ」ボタンをクリックすると、それは簡単なものでなければならない仕事...ここ

observe({ 
    req(input$mb_inputs) 
    isolate({ 
    print(input$mb_inputs) 
    }) 
}) 

答えて

3

修正と説明:https://github.com/rstudio/shiny/pull/1402

ますトリガされシャイニーにおける低レベルのバグがありましたがinsertUIを使用し、uiOutputをネストしてくださいまたは挿入ポイントの近くに配置します。基本的には、HTMLが挿入された後、Shinyは全てのuiOutput要素を見つけ出し、繰り返し処理します。ネストされたuiOutputの場合、リスト内のいくつかの要素はリスト内の他の要素の中にネストされる可能性がありました。これは通常はOKですが、外側の以前の要素を処理すると、後で内側の要素がDOMから削除されます(これはあなたのケースで起こっています)。

関連する問題