Shiny.onInputChange不是一个函数
我有像我的shiny应用程序中的代码:
$(function() { Shiny.onInputChange('initialHash', parseHashQuery()); }); function parseHashQuery() { var result = {}; location.hash.replace(/^#/, '').split('&').filter(Boolean).forEach(function(part) { var pair = part.split('='); result[pair[0]] = pair[1]; }); return result; }
但我有错误:
common.js:59 Uncaught TypeError: Shiny.onInputChange is not a function at HTMLDocument. (common.js:59) at i (jquery.min.js:2) at Object.fireWith [as resolveWith] (jquery.min.js:2) at Function.ready (jquery.min.js:2) at HTMLDocument.K (jquery.min.js:2)
解决方案是使用shiny的事件:
$(document).on('shiny:sessioninitialized', function(event) { Shiny.onInputChange('initialHash', parseHashQuery()); });
已经定义了Shiny.onInputChange
时执行的。
查看源代码 ,Shiny在jQuery ready函数中初始化,但是超时:
$(function() { // Init Shiny a little later than document ready, so user code can // run first (ie to register bindings) setTimeout(initShiny, 1); });