我正在浏览Meteor简单教程以及“这个'在我不可知的状态下,不同模板对象中的绑定工作似乎与我不一致。
/
我可以看到该任务是在视图中定义的xml模板,它是BASE_URL = 'https://api.github.com/licenses/'
对象中函数返回的项目的直观表示。
我想任务对象都绑定了每个对象的html表示形式(虽然我不知道怎么看似不是Template.body.events({
"submit .new-task": function(event) {
console.log(this); // Logs an empty object
}
})
Template.task.events({
"click .toggle-checked": function() {
console.log(this); // logs a task
}
});
元素中的任何标识属性? )
总之。单击任务时,Template.body.helpers
是任务。但是当我提交表格时,我期待li
成为正文。为什么不呢?
我期待Meteor以类似的方式处理this
和this
答案 0 :(得分:1)
在Meteor this
中引用数据上下文。您可以使用帮助程序或路由控制器(IronRouter或FlowRouter)
示例:
{{#with myData}}
<h1>{{title}}</h1>
{{/with}}
JS
Template.yourTemplate.helpers({
myData : function(){
return {
title : "My title"
}
}
})
您需要使用&#34;事件&#34;参数
Template.task.events({
"click .toggle-checked": function( event , instance ) {
console.log( event );
}
});
实例参数也非常有用。您可以访问jQuery选择器,例如:instance.$()
,它只会搜索模板上的元素以及子模板。
我个人经常使用这个实例。我最喜欢的模式是:
Template.task.onCreated(function(){
this.vars = new ReactiveDict();
this.data = "some data";
});
稍后,如果您想访问vars
或data
:
var instance = Template.instance();
使用实例,您可以避免在全局命名空间中存储状态,例如Session,并且您的代码更易于维护和理解。我希望这可以帮助您了解模板在Blaze中的工作原理。