Niedawno potrzebowałem tej samej funkcjonalności w mojej aplikacji, więc zdecydowałem się stworzyć własny pakiet, który wykona to zadanie po wyjęciu z pudełka. Mimo że wciąż trwają prace, możesz spróbować.
Zasadniczo, cała metoda jest następująca:
// Defines new method /extend
Template.prototype.copyAs = function (newTemplateName) {
var self = this;
// Creating new mirror template
// Copying old template render method to keep its template
var newTemplate = Template.__define__(newTemplateName, self.__render);
newTemplate.__initView = self.__initView;
// Copying helpers
for (var h in self) {
if (self.hasOwnProperty(h) && (h.slice(0, 2) !== "__")) {
newTemplate[h] = self[h];
}
}
// Copying events
newTemplate.__eventMaps = self.__eventMaps;
// Assignment
Template[newTemplateName] = newTemplate;
};
W nowym szablonie (new_template.js), w którym chcesz przedłużyć swój streszczenie jednego, napisać następujące:
// this copies your abstract template to your new one
Template.<your_abstract_template_name>.copyAs('<your_new_template_name>');
teraz możesz po prostu zastąpić pomocników lub zdarzenia (w moim przypadku jest to pomocnik photos
), wykonując następujące czynności:
Template.<your_new_template_name>.photos = function() {
return [];
};
Twoja wola odnosi się do nadpisanych metod pomocniczych i do abstrakcyjnych, które nie są nadpisywane.
Pamiętaj, że plik HTML nowego szablonu nie jest konieczny, ponieważ cały czas odnosimy się do abstrakcyjnego.
Kod źródłowy jest dostępny na Github here!
Stworzyłem [pakiet] (https://atmosphere.meteor.com/package/view) o nazwie 'widok' dla meteoru. Używam go do zawijania widoków meteorów z klasą widoku podobną do szkieletu. Może znajdziesz tam kilka pomysłów na początek. – Andreas