Oto funkcja rejestrowania renderowania, która może okazać się przydatna. Loguje liczbę razy, gdy każdy szablon jest renderowany do konsoli. Wiesz, czy szablon jest ponownie renderowany po wczytaniu strony początkowej, ponieważ zmieniło się reaktywne źródło danych, na którym się opiera. Do tego reaktywnego źródła danych można było uzyskać dostęp za pomocą metody pomocniczej lub szablon jest elementem listy (tj. Wewnątrz bloku pomocniczego {{#each ...}}
), a element listy został dodany, przeniesiony, usunięty lub zmieniony. Należy również pamiętać, że szablony podrzędne wywołują wywołanie zwrotne swojego rodzica, gdy dziecko jest renderowane lub ponownie renderowane. Więc może to wprowadzać w zakłopotanie myślenie, że rodzic został usunięty z DOM i cofnięty, ale to nie jest prawda.
Tak, można wywołać tę funkcję na końcu kodu klienta, aby zobaczyć liczbę render:
function logRenders() {
_.each(Template, function (template, name) {
var oldRender = template.rendered;
var counter = 0;
template.rendered = function() {
console.log(name, "render count: ", ++counter);
oldRender && oldRender.apply(this, arguments);
};
});
}
EDIT: Oto sposób, aby owinąć kursor find zapisywać wszystkie zmiany do kursor do konsoli. Właśnie napisałem podobną funkcję do tego dla nowego pakietu, nad którym pracuję, nazywanego reaktywną wizją. Mam nadzieję, że wkrótce zostanie wydany.
var wrappedFind = Meteor.Collection.prototype.find;
Meteor.Collection.prototype.find = function() {
var cursor = wrappedFind.apply(this, arguments);
var collectionName = this._name;
cursor.observeChanges({
added: function (id, fields) {
console.log(collectionName, 'added', id, fields);
},
changed: function (id, fields) {
console.log(collectionName, 'changed', id, fields);
},
movedBefore: function (id, before) {
console.log(collectionName, 'movedBefore', id, before);
},
removed: function (id) {
console.log(collectionName, 'removed', id);
}
});
return cursor;
};
Cool, to jest bardzo pomocne. Czy istnieje sposób sprawdzenia, który helper lub element listy rzeczywiście wygenerował przebudowę szablonu? – Ricochet
Myślę, że moje ogólne pytanie może być, czy istnieje sposób, aby włączyć coś takiego jak obserwujChanges na całym świecie? bez konieczności konfigurowania go w każdym znalezisku. – Ricochet
Musiałbym wymyślić sposób na zrobienie tego. Musiałbyś stać się kreatywny. – cmather