アプリケーションとスライダーという名前の2つのmongo meteorコレクションがあり、それらをサブスクライブするサービスがあり、準備ができたらツリー形式で配列にデータを入力します。
問題は、コレクションが変更されたときに、それについてサービスに何も伝えていないことです。したがって、コレクションと配列をhtmlに出力すると、初めてすべてが同期されますが、コレクションの変更後はコレクションのみが変更されます..配列ではありません
つまり、データベース内のコレクションが変更されると、流星コレクションは更新されますが、私の「セクション」配列は更新されません
私のサービスで:
var applications, sliders;
var sections = [{
name: 'Getting Started',
//state: 'home.gettingstarted',
type: 'link'
}];
$meteor.subscribe('applications').then(function(subscriptionHandle) {
applications = $meteor.collection(Applications);
}).then(function(subscriptionHandle) {
$meteor.subscribe('sliders').then(function(subscriptionHandle) {
sliders = $meteor.collection(Sliders);
createSections();
});
});
function createSections() {
//some login to create a tree
for (var i = 0; i < applications.length; i++) {
var pages = [];
for (var j = 0; j < sliders.length; j++) {
if (sliders[j].appId != applications[i].id())
continue;
var page = {};
page.name = sliders[j].nm;
page.type = "link";
page.data = sliders[j];
pages.push(page);
}
sections.push({
name: applications[i].nm,
type: 'toggle',
pages: pages,
data: applications[i]
});
}
}
サービスを使用する際のコントローラー。HTMLはセクションをループしています。