ReferenceError:模板未定义 - Meteor?

时间:2016-06-02 19:04:34

标签: javascript templates meteor

我正在与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();
       },
    }); 

1 个答案:

答案 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();
  },
});