Z tego, co zrobiłem w przeszłości (przed użyciem knockoutjs) wywoływałbym funkcję tabs() w każdej chwili, gdy aktualizowałam widok na stronie. Próbuję to zrobić na stronie knockoutjs, którą zrobiłem. Za każdym razem, gdy zmieniam tablicę obserwowalną, deinicjalizuje ona karty jquery. W porządku, po prostu zadzwonię do tej funkcji. To chyba nic nie robi.Karta Jquery UI init po zmianie tablicy w knockoutjs
var viewModel = {
lines: ko.observableArray([]),
activeTab: ko.observable(),
addLine : function() {
var self = this;
$.post('/add/line', {customer_id : customer_id } , function(data) {
var line = ko.toJS(data);
self.lines.push(new Line(line.id, line.name, line.equipType, line.model, line.height, line.length, line.loadsWeek, line.weight, line.width, line.pallets));
$("#lineTabs").tabs({ selected: 0 });
$(".palletTabs").tabs({ selected: 0 });
});
}
};
Z jakiegoś powodu działa poprawnie, gdy inicjuję stronę.
$.getJSON("/json/all/lines", { customer_id : customer_id } , function(data) {
var mappedData = ko.utils.arrayMap(data, function(line) {
return new Line(line.id, line.name, line.equipType, line.model, line.height, line.length, line.loadsWeek, line.weight, line.width, line.pallets)
});
viewModel.lines(mappedData);
$("#lineTabs").tabs({ selected: lineTabIndex });
$(".palletTabs").tabs({ selected: 0 });
});
Czy jest tu coś, czego mi brakuje? Dzięki za pomoc.
Hej dzięki za to. Właśnie dowiedziałem się kilka minut temu, że trzeba zniszczyć i to mi pomogło. Widziałem już niektóre z twoich wiążących przykładów, ale wydawało się, że nie działają, ale tak jest. Twoje wiązanie wydaje się znacznie bardziej eleganckim rozwiązaniem. Dzięki za twoją pomoc ponownie. Twój mistrz Knockout. –
+1 Jeszcze raz twoja wiedza o KO ratuje mi dzień! –
+1 Dzięki za to, nie było dokładnie to, czego potrzebowałem, ale zbliżyłem mnie! –