我正在尝试构建一个没有ui.R文件的R Shiny应用程序,几乎让它正常工作,但在最后的障碍中跌跌撞撞。以下是该问题的最简单的工作演示:
这是我的index.html:
<html>
<head>
<link rel="stylesheet" type="text/css" href="jquery-ui.css"/>
<script src="jquery.js" type="text/javascript"></script>
<script src="jquery-ui.js" type="text/javascript"></script>
<script src="test.js" type="text/javascript"></script>
<script src="shiny.js" type="text/javascript"></script>
</head>
<body>
<div id="RAND" name="RAND">RAND</div>
<div id="ADD1" name="ADD1" class="action-button">+1</div>
<p></p>
<div class="form-group shiny-input-container">
<input id="temp" name="temp" type="text" class="form-control"/>
</div>
<p></p>
<div id="out" class="shiny-text-output"></div>
</body>
</html>
这是server.R文件:
library(shiny)
shinyServer(function(input,output,session){
observeEvent(input$ADD1, {
output$out <- renderText({ as.numeric(input$temp) + 1 })
});
});
最后,这是我的Javascript代码(test.js):
$(function(){
$("#RAND").button()
$("#RAND").click(function() {
$("#temp").val(Math.random());
});
$("#ADD1").button()
});
答案 0 :(得分:2)
感谢warmoverflow的建议,我设法回答了我自己的问题:
index.html保持不变
server.R成为:
library(shiny)
shinyServer(function(input,output,session){
observe({
input$randval
})
observeEvent(input$ADD1, {
output$out <- renderText({ as.numeric(input$randval) + 1 })
})
})
和test.js成为:
$(function(){
$("#RAND").button()
$("#RAND").click(function() {
val = Math.random();
$("#temp").val(val);
Shiny.onInputChange("randval",val);
});
$("#ADD1").button()
});
请注意,$(#temp)中存储的值并未真正用于任何内容,可以删除。我把它留在代码中,与我最初的问题表述进行比较。