我正在开发带有流星火焰的网页组件。
在模板助手中,
Template.Button.helpers({
btnName: function() {
var FirstBtn = new ButtonComponents('Name', this.class, '50px', '30px', '#DDDDDD');
return FirstBtn.buttonName();
},
btnClass: function() {
var FirstBtn = new ButtonComponents('Name', this.class, '50px', '30px', '#DDDDDD');
return FirstBtn.buttonClass();
},
btnStyle: function() {
var FirstBtn = new ButtonComponents('Name', this.class, '50px', '30px', '#DDDDDD');
return FirstBtn.buttonStyle();
}});我只想在助理员中申报一次FirstBtn。
由于FirstBtn的原因,我不想在助手之外声明this.class。
我该怎么做?
发布于 2017-08-11 07:20:51
var FirstBtn;
function getFirstBtn(cls) {
if (FirstBtn == null) {
FirstBtn = new ButtonComponents('Name', cls, '50px', '30px', '#DDDDDD');
}
return FirstBtn;
}
Template.Button.helpers({
btnName: function() {
return getFirstBtn(this.class).buttonName();
},
btnClass: function() {
return getFirstBtn(this.class).buttonClass();
},
btnStyle: function() {
return getFirstBtn(this.class).buttonStyle();
}
});补充道:强烈建议您在onCreated中创建这个按钮,并将其存储在模板实例本身中。稍后,您可以从类似这样的帮助器中引用它:例如,Template.instance().FirstBtn.buttonName()。
发布于 2017-08-14 14:16:12
您应该将变量放在模板实例中,并使用Template.instance().访问它。
Template.Button.onCreated(function(){
this.FirstBtn = new ButtonComponents('Name', this.data.class, '50px', '30px', '#DDDDDD');
});
Template.Button.helpers({
btnName: function() {
const instance = Template.instance();
return instance.FirstBtn.buttonName();
},
btnClass: function() {
const instance = Template.instance();
return instance.FirstBtn.buttonClass();
},
btnStyle: function() {
const instance = Template.instance();
return instance.FirstBtn.buttonStyle();
}});在助手的第一行编写const instance = Template.instance();是BlazeJS文档推荐的一个良好实践。
https://stackoverflow.com/questions/45629079
复制相似问题