Template.instance()和这个有什么区别?使用其中一个是否有优势?
<application
android:label="DumbCardElevation"
android:theme="@android:style/Theme.Holo.Light" >
<activity
android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
答案 0 :(得分:7)
如果在onCreated
,onRendered
或onDestroyed
等生命周期事件中,Template.instance()
将返回与this
相同的对象,因为在这些回调注册功能中,this
由Meteor明确设置为当前模板实例。
HTML
<template name="component">
<div class="component">
<p>Hello <em>{{name}}</em>, click the button!</p>
<button type="button">Click me!</button>
<p>You clicked <strong>{{count}}</strong> time(s) on the button.</p>
</div>
</template>
<body>
{{> component name="World"}}
</body>
JS
Template.component.onCreated(function(){
console.log(this == Template.instance());
// use this to access the template instance
this.count = new ReactiveVar(0);
// use this.data to access the data context
console.log(this.data.name == "World");
});
但是在模板助手中,this
绑定到模板的数据上下文,而不是模板实例本身,因此使用Template.instance()
是访问执行帮助程序的模板实例所必需的。
Template.component.helpers({
count: function(){
// use this to access the data context
console.log(this.name);
// use Template.instance() to access the template instance
return Template.instance().count.get();
}
});
最后,在模板事件中,this
也绑定到模板的数据上下文,但是使用额外的template
参数调用事件处理程序,您可以将其用作{Template.instance()
的简写。 1}}。
Template.component.events({
"click button": function(event, template){
// use this to access the data context
console.log(this.name);
// use the argument to access the template instance
var currentCount = template.count.get();
template.count.set(currentCount + 1);
}
});