2014-07-10 16 views
5

यदि मेरे चमकदार ऐप में कई गतिशील रूप से जेनरेट की गई कार्रवाइयां हैं, तो क्या यह जानने का कोई तरीका है कि कौन सा एक्शन बटन क्लिक किया गया था और बटन के आईडी के साथ कुछ गणना की गई थी?एक चमकदार ऐप में कई क्रियाओं के क्लिक को संभालना

उत्तर

1

मुझे एक ही समस्या थी, हालांकि बटन मेरे मामले में गतिशील रूप से उत्पन्न नहीं होते हैं। यह सवाल से स्पष्ट नहीं है कि "गतिशील रूप से जेनरेट" पहलू पर जोर दिया गया है। यदि ऐसा है तो मेरा उत्तर आप मदद नहीं करता है ज्यादा ...

मेरा उत्तर आसान बनाने के लिए मैं समस्या निम्नलिखित को कम:

  • मैं अपने यूआई (id="increase" और id="decrease") में दो actionButtons है और मैं एक है वास्तविक मूल्य दिखाने के लिए पूर्णांक चर (var) और टेक्स्ट आउटपुट (id="actual_value")। बटनों में से एक को मूल्य में वृद्धि करना चाहिए, दूसरे को इसे कम करना चाहिए और स्पष्ट रूप से आउटपुट को अद्यतन मूल्य दिखाना चाहिए।

समाधान है:

shinyServer(function(input, output, session) { 
     increase <- reactive({ 
      if(input$increase == 0) return() 
      var <- var + 1 
      }) 

      decrease <- reactive({ 
      if(input$decrease == 0) return() 
      var <- var - 1 
      }) 

      actual.value <- reactive({ 
      increase() 
      decrease() 
      var 
      }) 

      output$actual_value <- renderText({ 
      paste("Actual value is: ", actual.value()) 
      }) 
    }) 

तो स्पष्टीकरण दो प्रतिक्रियाशील आदानों (अर्थात, बटन), और दो इसी प्रतिक्रियाशील भाव (increase और decrease) देखते हैं कि है। एक तीसरी प्रतिक्रियाशील अभिव्यक्ति (actual.value) पहले दो पर निर्भर करती है और var का वास्तविक मान देता है। प्रतिक्रियाशील आउटपुट इस पर निर्भर करता है।

तो तुम दो बटन (increase और decrease) के लिए दो अलग-अलग प्रतिक्रियाशील भाव और फिर तीसरा (actual.value) में मल्टीप्लेक्स तो बना लें।

यह काम करता है, हालांकि मुझे नहीं पता कि यह ऐसी समस्या को हल करने का सबसे अच्छा तरीका है या नहीं।

संबंधित मुद्दे