在 Meteor 中,我将两个对象从我的数据库发送到模板:
Template.myTemplate.helpers({
helper1: function() {
var object1 = this; // data context set in iron:router...path is context dependent
// modify some values in object1
return this;
},
helper2: function() {
return Collection2.find({_id: this.object2_id});
}
});
此模板还具有一个事件处理程序,用于修改上述两个对象。我正在尝试从上面访问 helper1 和 helper2,但是如果我调用模板的数据上下文,我只能访问 object1 的未修改版本。如何访问上面定义的帮助程序?
Template.myTemplate.events({
'submit form': function(event) {
event.preventDefault();
// Access helper2 object and attributes here instead of calling Collection2.find() again
}
});
帮助程序只是函数,因此可以随意传递并分配给其他变量,因此您可以定义一个函数,然后为其分配模板帮助程序的 helper2 键,并通过事件处理程序的原始引用进行调用。
var helperFunction = function() {
return Collection2.find({_id: this.object2_id});
};
Template.myTemplate.helpers({
helper1: function() {
var object1 = this; // data context set in iron:router...path is context dependent
// modify some values in object1
return this;
},
helper2: helperFunction
});
Template.myTemplate.events({
'submit form': function(event) {
event.preventDefault();
var cursor = helperFunction();
}
});
如果你可以从事件中修改助手,那么,Meteor应用程序的任何部分都可以,这与Blaze的设计理念背道而驰!
Blaze被设计成单向数据绑定诱惑系统。你所要求的可以使用 Angular 来实现(单独使用,或与 Blaze 并排使用,看看 THIS),它本质上是一个双向数据绑定诱人系统。
您可能还需要检查 React,这也是一种 2 路数据绑定