首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在JavaScript助手中只声明一次变量?

如何在JavaScript助手中只声明一次变量?
EN

Stack Overflow用户
提问于 2017-08-11 07:12:17
回答 2查看 343关注 0票数 2

我正在开发带有流星火焰的网页组件。

在模板助手中,

代码语言:javascript
运行
复制
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

我该怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-11 07:20:51

代码语言:javascript
运行
复制
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()

票数 3
EN

Stack Overflow用户

发布于 2017-08-14 14:16:12

您应该将变量放在模板实例中,并使用Template.instance().访问它。

代码语言:javascript
运行
复制
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文档推荐的一个良好实践。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45629079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档