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

标签 javascript variables meteor helper meteor-blaze

我正在使用 Meteor-blaze 开发 Web 组件。

在模板助手中,

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

由于 this.class,我不想在助手之外声明 FirstBtn

我该怎么做?

最佳答案

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()

关于javascript - 如何在 JavaScript 助手中只声明一次变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45629079/

相关文章:

meteor - 模板不会在 Meteor FlowRouter 中呈现

javascript - 如何用js激活网络摄像头拍照

javascript - Lync 状态 : namectrl Permission denied issue in IE

Python 变量 + 自身

javascript - 在 Node.js 中导出变量的推荐方法

java - 如何从另一个类(java)访问主类的变量?

javascript - 按右箭头键时光标消失

mongodb - Meteor mongo find()UnhandledPromiseRejectionWarning,超过最大调用堆栈大小

javascript - 使用 CORS 和本地策略将客户端应用程序验证到 REST API

javascript - 如何在 Angular 中设置未知高度的动画?