Методы Tracker точно не относятся к ядру функциональности Meteor, редко используются в учебниках и книгах-новичках (и если они не очень хорошо объясняются), и, как следствие, они считаются намного более «страшными», чем большая часть остальной части структуры.На простом английском языке, что делает Tracker.autorun?
Я, например, никогда не мог спорить с Tracker.autorun
в мой проект, поскольку он никогда не делает того, чего от него ожидают. Это то, что говорят документы:
Запустите функцию сейчас и запустите ее позже, когда будут установлены ее зависимости .
Для меня это звучит как способ сделать не-реакционные источники реакционным, но тогда вы пришли в примерах, первый из которых выглядит следующим образом:
Tracker.autorun(function() {
var oldest = _.max(Monkeys.find().fetch(), function (monkey) {
return monkey.age;
});
if (oldest)
Session.set("oldest", oldest.name);
});
Как именно это отличается от не используя Tracker.autorun
? Курсоры уже являются реакционным источником, и для того, чтобы сделать вещи более запутанными , следующий пример касается другого реакционного источника: Сессии.
Работает ли Tracker.autorun
только с реакционными источниками, и если да, то в чем польза от использования их внутри Tracker
? Сделать их вдвойне реакционными?
Великий ответ, это решить еще один вопрос у меня был где в onRendered, в Tracker.autorun, я не мог получить доступ к шаблону, используя this.find ('...'). Используя this.autorun and.bind (это), я смог заставить все работать. Вопрос: является ли .bind (this) необходимым сделать this.find ('')? И в чем его цель? – Aaron
Ну, это был бы еще один вопрос в целом, посмотрите на: http://javascriptissexy.com/javascript-apply-call-and-bind-methods-are-essential-for-javascript-professionals/. Meteor 1.2 будет внедрить поддержку ES2015 и функции Arrow, что делает это конкретное использование привязки несущественным. https://github.com/lukehoban/es6features#arrows – saimeunt