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