#meteor
#meteor
Вопрос:
Я создаю эти две локальные коллекции (код фактически записывается один за другим точно так же, как показано ниже):
ShoppingCartCollection = new Meteor.Collection(null);
CurrentPricesCollection = new Meteor.Collection(null);
Внутри Template.myTemplate.rendered
я добавляю некоторую начальную информацию в эти коллекции (опять же, код идет один за другим):
ShoppingCartCollection.insert({"sqft" : "not yet entered"});
CurrentPricesCollection.insert({"hdrPhotos" : 100});
У меня есть эти два глобальных помощника helpers.js
(определенные один за другим)
Handlebars.registerHelper("shoppingCart", function() {
return ShoppingCartCollection.findOne();
});
Handlebars.registerHelper("currentPrice", function() {
return CurrentPricesCollection.findOne();
});
Когда я загружаю страницу, я немедленно запускаю эти команды в консоли:
> ShoppingCartCollection.findOne();
Object {sqft: "not yet entered", _id: "xcNmqJvMqqD5j7wwn"}
> CurrentPricesCollection.findOne();
Object {hdrPhotos: 100, _id: "LP38E3MZgzuYjvSec"}
В моем шаблоне я использую эти помощники, но…
{{currentPrice.hdrPhotos}} //displays nothing
{{shoppingCart.sqft}} //displays "not yet entered"
Как… что … ? Как это может быть? Есть ли какие-то ошибки, которые я мог пропустить? Какая-то зависимость или порядок загрузки, о которых я не знаю?
Комментарии:
1. Являются ли эти два вспомогательных вызова также рядом друг с другом?
2. Ага. Бок о бок. Тот же шаблон.
3. Здесь все работает нормально, будут публиковаться точные файлы.
4. обратный порядок шаблонов, ничего не изменилось.
5. Grrrr… Я перезапустил свой сервер meteor. То же самое. Я попытаюсь выполнить сброс.
Ответ №1:
Опубликованный вами код здесь работает нормально.
Предложите сравнить этот код с точными деталями того, что вы делаете. Кроме того, ищите другие проблемы, опечатки и т. Д.
Ниже приведена точная процедура тестирования, которую я использовал:
Из ничего, на консоли Linux:
meteor create sodebug
Обратите внимание, что это приведет к созданию файлов для программы типа «hello world».
Проверьте версию:
meteor --version
Release 0.8.1.1
Редактировать sodebug/sodebug.js:
if (Meteor.isClient) {
// code autogenerated by meteor create
Template.hello.greeting = function () {
return "Welcome to sodebug.";
};
Template.hello.events({
'click input': function () {
// template data, if any, is available in 'this'
if (typeof console !== 'undefined')
console.log("You pressed the button");
}
});
// add your code here
ShoppingCartCollection = new Meteor.Collection(null);
CurrentPricesCollection = new Meteor.Collection(null);
ShoppingCartCollection.insert({"sqft" : "not yet entered"});
CurrentPricesCollection.insert({"hdrPhotos" : 100});
Handlebars.registerHelper("shoppingCart", function() {
return ShoppingCartCollection.findOne();
});
Handlebars.registerHelper("currentPrice", function() {
return CurrentPricesCollection.findOne();
});
}
if (Meteor.isServer) {
Meteor.startup(function () {
// code to run on server at startup
});
}
Редактировать sodebug.html:
<head>
<title>sodebug</title>
</head>
<body>
{{> hello}}
{{> T1 }}
{{> T2 }}
</body>
<template name="T1">
<p>
{{shoppingCart.sqft}}
</p>
</template>
<template name="T2">
<p>
{{currentPrice.hdrPhotos}}
</p>
</template>
<template name="hello">
<h1>Hello World!</h1>
{{greeting}}
<input type="button" value="Click" />
</template>
Выполнить: meteor run
Ручные тесты:
Запустите браузер chromium на localhost: 3000
Проверьте консоль веб-браузера на наличие данных коллекций. ПЕРЕДАТЬ
Проверьте данные шаблонов на экране веб-браузера. ПЕРЕДАТЬ
Измените порядок шаблонов в sodebug.html
файле, проверьте экран веб-браузера. ПЕРЕДАТЬ
Комментарии:
1. Хорошо, я думаю, я знаю, что происходит.
helpers.js
внутри моейclient
папки отличается от моейhelpers.js
внутри скрытой.meteor
папки. Проблема, однако, в том, что если я удалюhelpers.js
внутреннюю скрытую папку, а затем сделаюmeteor rebuild-all
это, она продолжит перестраивать старую, несинхронизированнуюhelpers.js
внутри скрытой папки. Эта старая версия внутри.meteor
не включает глобальные помощники, которые я определил в OP. Meteor 0.8.1.3. Но как он вообще узнает, что нужно перестроить старую версию??? Откуда вообще берутся инструкции по перестройке старой версии?2. Уххх… Я закрыл свой текстовый редактор (Sublime), чтобы убедиться, что он не блокирует какие-либо файлы. Я выполнил еще одну перестройку, и на этот раз, похоже, все вернулось к норме. Все еще не объясняет, как Meteor находил информацию для восстановления старой версии
helpers.js
though.