我有一个愚蠢的问题(或不是),我们如何在Meteor中完全或大致使用绑定方法?
我有以下代码,但事实上我正在重复它,打扰了我。
非常感谢你的意见!
胆红素
Meteor.publish('allComments', function() {
var comments = Comments.find();
comments.observeChanges({
added: function (id, fields) {
this.added('comments', id, fields);
}.bind(this),
changed: function (id, fields) {
bind.changed('comments', id, fields);
}.bind(this),
removed: function (id) {
this.removed('comments', id);
}.bind(this)
});
});
答案 0 :(得分:0)
这与Meteor无关,但Javascript的工作原理如何。在你的js中,你将每个函数绑定到赋予Meteor.publish
的匿名函数。
一种方法:
Meteor.publish('allComments', function() {
var comments = Comments.find();
var observer = {
added: function (id, fields) {
this.added('comments', id, fields);
},
changed: function (id, fields) {
bind.changed('comments', id, fields);
},
removed: function (id) {
this.removed('comments', id);
}
};
observer.added = observer.added.bind(observer);
observer.changed = observer.changed.bind(observer);
observer.removed = observer.removed.bind(observer);
comments.observeChanges(observer);
});
答案 1 :(得分:0)
你应该使用observeChanges。
查看文档(observeChanges)
这是一个简单的例子
Meteor.publish('orders', function(userId) {
const fieldsIncluded = {
fields: {
_id: 1,
idOrder: 1,
},
};
Orders.find((userId), fieldsIncluded).observeChanges({
added: (id, order) => {
this.added('orders', id, formatOrderForGroom({ id, order }));
},
changed: (id) => {
const fullOrder = Orders.findOne({ _id: id });
this.changed('orders', id, formatOrderForGroom({ id, fullOrder }));
},
removed: (id) => {
this.removed('orders', id);
},
});
this.ready();
});