В настоящее время я работаю над модулем CMS на основе gridster, и это необходимо, чтобы конечный пользователь мог создавать разные макеты, чтобы создавать экземпляр gridster несколько раз.
Моя проблема возникает, когда я перебираю номер сетки, который должен быть установлен, и пытаюсь определить обратные вызовы, которые должны вызываться с разными аргументами на основе итерации, в которой они определены: когда я их тестирую, кажется, что они наследуют (последний ) одинаковое значение.
Я думаю, что это вопрос закрытия, и я пытаюсь решить это, даже читая несколько сообщений с этого форума, но безуспешно, и я очень признателен, если кто-то может дать мне подсказку, чтобы выбрать правильный путь.
вот мой код:
var gridster= [];
var id_layouts = [];
$(".selectedLayout").each(function(){
id_layouts.push($(this).val());
});
for(i=0; i<id_layouts.length; i++){
makeGridster(i, id_layouts[i]);
}
function makeGridster(index, id_layout){
gridster[index] = $('#blockcompositeGrid'+id_layout+' > ul').gridster({
widget_margins: [10, 10],
widget_base_dimensions: [100, 100],
draggable:{
stop: function(){
return function(i, l){
updateSerialization(i, l)
}(index, id_layout)
}
}
}).data('gridster');
}
function updateSerialization(index, id_layout){
console.log(index, id_layout);
}
Сетки строятся, это нормально. Как видите, я пытаюсь вызвать функцию обратного вызова остановки действия перетаскивания, и она должна вызываться с другими аргументами. Я нашел это, которое кажется похожим к тому, что мне нужно, но, к сожалению, я ничего не знаю о coffeescript и из документации coffescript для 'do' (coffescript.org) Я не вижу, что делаю не так. Спасибо заранее за любую помощь