我正在创建一个仪表板,R和D3运行库(闪亮).
这非常好用,现在我想将D3代码转换为模块化对象,这将为我节省大量编码并使其可供其他人使用.我的想法是达到这个目的:
<r-d3-gauge id="G1" data="[1,2,3]"></r-d3-gauge>
<r-d3-gauge id="G2" data="[4,5,6]"></r-d3-gauge>
Run Code Online (Sandbox Code Playgroud)
我有两个可以用CSS定位的仪表,或者只是用HTML(....)注入它们.好吧,使用AngularJS应该很简单.
但我无法让AngularJS在R闪亮中工作.我制作了这个测试代码:(带有d3.js的www文件夹和server.r/ui.r旁边的angular.min.1.4.3.js)
ui.r
library(shiny)
shinyUI(fluidPage(
tags$head(tags$script(src = "d3.js"))
,tags$head(tags$script(src = "angular.min.1.4.3.js"))
,htmlOutput("JS")
,htmlOutput("HTML")
))
Run Code Online (Sandbox Code Playgroud)
server.r
library(shiny)
shinyServer(function(input, output) {
# HTML
output$HTML <- renderUI({
html <- ''
html <- paste0(html,'
<p>Input something in the input box:</p>
<h4>Name: <input type="text" ng-model="name"></h4>
<h4 ng-bind="name"></h4>
<h4>Name: <input type="text" ng-model="name2"></h4>
<h4>You wrote: {{name2}}</h4>
')
HTML(html)
})
# JS
output$JS <- renderUI({
html <- "<script language='JavaScript'>"
html <- paste0(html,'
if(typeof angular == "undefined") {
console.log("angular == undefined"); …Run Code Online (Sandbox Code Playgroud)