我試圖在Splunk中的儀表板上觀看(並根據需要更改)多選的選擇。爲此,我使用Javascript獲取多選,並聽取其上的「更改」事件。在改變時,我運行一個接收多選的函數來檢查和調整選擇。Javascript,jquery,backbone,splunk:on(「change」,{data},handler)導致TypeError
我的代碼大致如下:
// Get the multiselect
var multi1 = splunkjs.mvc.Components.getInstance("input1");
// Function to check selection
function smartSelector(container){
var multi = container.multi;
var selection = multi.val();
if (...) {
// Change selection
...
// Set new selection to multi and refresh item
multi.val(selection);
multi.render();
}
};
// On change, run function
multi1.on("change", function() {smartSelector({multi: multi1})});
這工作得很好。但是從我的理解,有從w3schools定義事件,如在這個例子中的處理程序和數據更漂亮的方式:,
function doIt(event) {
alert(event.data.msg);
}
$(document).ready(function() {
$("p").on("click", {msg: "You just clicked me!"}, doIt)
});
但是當我申請這對我這樣的代碼:
// Fetch another multiselect
var multi2 = splunkjs.mvc.Components.getInstance("input2");
// Adjust function code to get event data
function smartSelector(event){
var multi = event.data.multi;
...
}
// Adjust on("change", ...) to work with event data and handler
multi2.on("change", {multi: multi2}, smartSelector);
我得到一個TypeError: (intermediate value).callback.call is not a function
在mvc.js:6:108716
,我認爲這是Backbone(作爲Splunk的一部分)的一部分。
這是什麼原因造成的?我能做些什麼來實現正確的行爲? 謝謝你的想法。
我不知道,因爲在第二個例子中沒有調用smartSelector。 但我想你是對的,我不能假設'on()'在splunkjs中與原始的相比是相同的 - 我會在splunk回答這個問題。 – fishgehoelz 2015-04-07 07:33:32