現実の世界では非現実的であるように、自動公開をオフにして以来、テンプレートはコレクションのレンダリングを停止しました (#each は何もループしていないようです)。コレクションの手動パブリッシュ/サブスクライブを設定しました。コンソールにログを記録すると、ローカル コレクションにアイテムが含まれていることがわかりますが、テンプレートはアイテムのレンダリングに失敗します。
テンプレートの自動更新の性質を維持するために、コレクションを手動でサブ/パブリッシュするときに何かする必要がありますか?
私が作成した希釈テストケースは次のとおりです。
// client
Col = new Meteor.Collection('testcol');
// I have tried wrapping this in autosubscribe as well:
Meteor.subscribe('testcol', function() {
return Col.find();
});
Template.hello.items = function() {
var col = Col.find();
if (col) {
console.log("Test items" , col);
return col.fetch().items;
}
}
// server
if (Meteor.is_server) {
Col = new Meteor.Collection('testcol');
Meteor.publish('testcol', function() {
return Col.find();
})
}
// bootstrap:
Meteor.startup(function () {
if (Col.find().count() < 5) {
for (var i=0; i<5; i++) {
Col.insert({
title: 'Test ' + i,
items: [
{title: 'item 1', value:true},
{title: 'item 2', value:false},
{title: 'item 3', value:true}
]
});
}
}
})
// Template
<head>
<title>test</title>
</head>
<body>
{{> hello}}
</body>
<template name="hello">
<h1>Where did the data gone to?</h1>
Items from the test collection:
<UL>
{{#each items}}
<LI> ITEM: {{title}}
{{/each}}
</UL>
</template>