我正在与Meteor制作两个不同的应用程序。在第一个应用witch you can see here中,我正在使用... template.текст.set( true ); ...
,一切正常。现在在第二个应用程序中我收到错误
ReferenceError:未定义模板 那么,问题是什么?我查了一下,包裹都一样。 这是第二个应用程序的代码:
Template.body.onCreated(function bodyOnCreated() {
this.TrenutniKorisnik = new ReactiveVar(true);
});
Template.PrijavaKorisnika.events({
'submit .Prijava': function(event) {
event.preventDefault();
var korisnik = event.target.КорисничкоИме.value;
var šifra = event.target.Лозинка.value;
if (Korisnici.findOne({КорисничкоИме: korisnik, Шифра: šifra})) { template.TrenutniKorisnik.set( false )};
event.target.КорисничкоИме.value = "";
event.target.Лозинка.value = "";
}
});
Template.body.helpers({
TrenutniKorisnik: function() {
return Template.instance().TrenutniKorisnik.get();
},
});
答案 0 :(得分:0)
模板实例是事件处理程序中的第二个参数。只需改变一下:
'submit .Prijava': function(event) {
到此:
'submit .Prijava': function(event, template) {
所以template
将在函数体中定义。
一旦解决了这个问题,您就会发现TrenutniKorisnik
未定义,因为它位于body
模板上,而不是当前模板。解决这个问题的一种方法是使用文件范围的变量而不是模板。这是一个例子:
var TrenutniKorisnik = new ReactiveVar(true);
Template.PrijavaKorisnika.events({
'submit .Prijava': function (event) {
...
if (Korisnici.findOne({ КорисничкоИме: korisnik, Шифра: šifra })) {
TrenutniKorisnik.set(false);
}
...
},
});
Template.body.helpers({
TrenutniKorisnik: function () {
return TrenutniKorisnik.get();
},
});