我正在尝试使用Meteor做一个简单的原型(我对Meteor来说很新)。
我在isClient块中有以下内容
Template.imageList.helpers({
images: function() {
return Images.find({});
},
}
);
然后为了快速演示目的,我将使用meteor mongo和以下
插入数据db.images.insert({ imgSrc: "http://mysite/img1.png", createdAt: new Date() })
这有效,我可以看到ui上反映的变化,但是当发生这种情况时我还需要运行客户端javascript函数。我一直在尝试像pub / sub和Tracker这样的东西但却无法正常工作。
任何指导都会很棒。
答案 0 :(得分:4)
使用meteor-collections-hooks更简单的方法来完成此任务。
meteor add matb33:collection-hooks
例如。
Images = new Mongo.Collection('Images')
example = function(){
console.log("updated")
}
if (Meteor.isClient) {
Images.before.update(function(userId, doc, fieldNames, modifier, options){
example();
})
}
每次example()
更新时,Images collection
函数都会运行。
答案 1 :(得分:2)
使用observeChanges
:
Images.find().observeChanges({
added: function (id, fields) {
runFunction();
},
changed: function (id, fields) {
runFunction();
},
removed: function (id) {
runFunction();
}
});
答案 2 :(得分:0)
在客户端的模板帮助程序上运行函数,如:
Template.imageList.helpers({
images: function() {
imgs = Images.find({});
yourFunction();
return images;
}
});
或使用Tracker.autorun
包装器:
Tracker.autorun(
Images.find({});
yourFunction();
)