如何让模板对象数据在Meteor模板中保留?

时间:2015-04-04 19:38:24

标签: templates meteor

我希望能够在使用模板事件处理函数时设置/获取模板对象的数据。我试图在渲染模板时设置一个变量,并希望稍后可以访问它,在这种情况下,当用户点击模板中的元素时,它不起作用:

<template name="fooBar">
    <div class="some_element">CLICK ME</div>
</template>

Template.fooBar.rendered = function(){
    this.templateVar = "Hello";
}

Template.fooBar.events({
    'click .some_element': function(e,t){
        alert(this.templateVar); // Should say 'Hello', but is 'undefined'.
    }
});

2 个答案:

答案 0 :(得分:2)

使用reactive-dict包,你可以这样做。

首先添加它。

meteor add reactive-dict

第二次创建模板。 (注意即时通讯使用meteor 1.1版本)

if (Meteor.isClient) {
  Template.hello.onRendered(function(){
       this.templateVar = new ReactiveDict(); //create the var templateVar
    })

   Template.hello.onRendered(function(){

     this.templateVar.set("hi", "hello"); //give them a value
   })

     Template.hello.events({
      'click .some_element': function(e,t){
         console.log(t.templateVar.get('hi')) //and print the value using the template instance.
      }
   });
 }

答案 1 :(得分:0)

根据Sindis的建议,这是解决问题的最快方法:

而不是......

alert(this.templateVar); 

......只是......

alert(this.templateVar);alert(Template.instance().templateVar);