[英]angular meteor collection onchange
我有2個mongo流星集合,命名的應用程序和滑塊,我有一個訂閱它們的服務,當它們准備就緒時,它將以樹格式填充數組。
問題在於,當集合發生更改時,什么也沒有告訴服務它。 因此,如果我將集合和數組打印為html,則所有內容都將首次同步,但是在對集合進行更改之后,僅集合會更改..而不是數組
簡而言之,當數據庫中的集合發生變化時,流星集合就會更新,但我的“ section”數組不會更新
為我服務:
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正在循環這些部分。
您正在訂閱回調中調用createSections
,僅在訂閱.ready()
時觸發一次。 聽起來好像您希望每次修改應用程序集合時都更新部分。 在這種情況下,您可以使用應用程序。 每次添加,更改或從您的集合中刪除文檔時,將觸發observeChanges
。 就像是:
applications.observeChanges({
added: function(id, doc) {
// do stuff with added documents
}
});
不要忘了Minimongo游標默認情況下是反應性的,只要您在反應性數據上下文中調用它們,那么簡單的applications.find().forEach(function(doc){})
就足以滿足您的目的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.