Итак, после прочтения, решение заключается в использовании метода update
при создании кнопок.
layoutButtons = list([
dict(type="buttons",
active=-1,
buttons=list([
dict(label = 'Label:On',
method = 'update',
args = [{'visible': [True, True, True, True]},{'annotations':layoutAnnotationList}]
),
dict(label = 'Label:Off',
method = 'update',
args = [{'visible':[True, True, False, False]},{'annotations':[]}]
),
]
)
)
]
)
У меня есть идея из здесь . Все еще не знаю, как интерпретировать словарь {'visible':[True, True, False, False]}
внутри аргументов, но он работает.
Кажется, что обзор выходит из-за цикла. Попробуйте это:
var table = $("table#output");
for (var i in items) {
var thisItem = items[i];
$.getJSON("myService", { "itemID": thisItem }, (function(thisItem) {
return function(json) {
var str = "<tr>";
str += "<td>" + thisItem + "</td>";
str += "<td>" + json.someMember + "</td>";
str += "</tr>";
table.append(str);
}
})(thisItem));
}
Править: все, что я сделал, было определить объем thisItem
к $.getJSON
обратный вызов.
JavaScript не использует блок для объема. Объем только основан на функциях.
Если Вы хотите новый объем, необходимо объявить новую внутреннюю функцию и сразу выполнить ее, это - единственный способ создать новый объем в JavaScript.
var table = $("table#output");
for( var i in items )
{
(function(){
var thisItem = items[i];
$.getJSON("myService", { "itemID": thisItem }, function(json)
{
var str = "<tr>";
str += "<td>" + thisItem + "</td>";
str += "<td>" + json.someMember + "</td>";
str += "</tr>";
table.append(str);
});
})();
}