2017-09-14 6 views
1

JavaScript 및 API에 대한 사전 프로그래밍 지식이 없으므로이 예제를 내 요구 사항에 맞게 만들려면 몇 가지 문제가 있습니다. select GitHub repo. 이 API를 사용하기 위해이 API를 적용하려고합니다 : https://api-adresse.data.gouv.fr/search/? .selectize.js 및 Shiny : 원격 API에서 선택 항목을 선택하십시오.

응답은 기능이 응답 $ 기능에 저장되는 GeoJSON 파일입니다. 각 기능에 대한 $ label 속성을 가져 오려고합니다.

여기까지 제가 한 것입니다. 나는 배열을 얻을 수 있지만, 항목 ... 드롭 다운에 표시되지 않습니다

UI :

######## 
# ui.R # 
######## 

library(shiny) 

fluidPage(
    title = 'Selectize examples', 
    mainPanel(
    selectizeInput('addresses', 'Select address', choices = '', options = list(
     valueField = 'properties.label', 
     labelField = 'properties.label', 
     searchField = 'properties.label', 
     options = list(), 
     create = FALSE, 
     render = I(" 
    { 
    option: function(item, escape) { 
     return '<div>' + '<strong>' + escape(item.properties.name) + '</strong>' + '</div>'; 
    } 
    }" ), 
     load = I(" 
    function(query, callback) { 
    if (!query.length) return callback(); 
    $.ajax({ 
     url: 'https://api-adresse.data.gouv.fr/search/?', 
     type: 'GET', 
     data: { 
     q: query 
     }, 
     dataType: 'json', 
     error: function() { 
     callback(); 
     }, 
     success: function(res) { 
     console.log(res.features); 
     callback(res.features); 
     } 
    }); 
    }" 
    ) 
    )) 
) 
) 

서버 :

############ 
# server.R # 
############ 

library(shiny) 

function(input, output) { 
    output$github <- renderText({ 
    paste('You selected', if (input$github == '') 'nothing' else input$github, 
      'in the Github example.') 
    }) 
} 

당신의 도움에 감사드립니다.

답변

1

의견 덕분에 this 개의 의견을 얻었습니다.

selectize 도트 표기법으로 중첩 된 값에 액세스를 지원하지 않는

UI :

######## 
# ui.R # 
######## 

library(shiny) 

fluidPage(
    title = 'Selectize examples', 
    mainPanel(
    selectizeInput('addresses', 'Select address', choices = '', options = list(
     valueField = 'name', 
     labelField = 'name', 
     searchField = 'name', 
     loadThrottle = '500', 
     persist = FALSE, 
     options = list(), 
     create = FALSE, 
     render = I(" 
    { 
    option: function(item, escape) { 
     return '<div>' + '<strong>' + escape(item.name) + '</strong>' + '</div>'; 
    } 
    }" ), 
     load = I(" 
    function(query, callback) { 
    if (!query.length) return callback(); 
    $.ajax({ 
     url: 'https://api-adresse.data.gouv.fr/search/?', 
     type: 'GET', 
     data: { 
     q: query 
     }, 
     dataType: 'json', 
     error: function() { 
     callback(); 
     }, 
      success: function (data) { 
       callback(data.features.map(function (item) { 
        return {name: item.properties.name, 
        label: item.properties.label, 
        score: item.properties.score}; 
       })); 
      } 


    }); 
    }" 
    ) 
    )) 
) 
) 

서버 :

############ 
# server.R # 
############ 

library(shiny) 

function(input, output) { 
    output$github <- renderText({ 
    paste('You selected', if (input$github == '') 'nothing' else input$github, 
      'in the Github example.') 
    }) 
}