反应计算在Meteor.js中完成的表单输入的数量

时间:2014-08-08 19:28:52

标签: forms meteor

我一直在努力实现这个实现,所以我想我会在Stack Overflow上给出一个很好的社区来解决我的问题。

所以我得到了一份标准的个人信息表。表单ID是“个人形式”。 我从模板中有一个名为{{numFormsCompleted}}的辅助方法。

这是我对方法的实现 -

numFormsCompleted : function(){
        var count = 0;
        var form = document.getElementById("quote-form");
        console.log(form);
        if(form == null)
            return 0;
        else{
            for(i = 0; i < form.length; i++){
                value = form.elements[i].value;
                if(value != "" || value != null)
                    count++;
            }
            console.log(count);
            return count;
        }
    }

表单显示为null。谁知道为什么?

1 个答案:

答案 0 :(得分:0)

您的模板在代码运行时可能已呈现或未呈现,因此您可以在模板的呈现回调中运行函数,然后分配返回值,而不是将其作为模板的帮助程序。到一个被动的会话变量。

Template.myFormTemplate.rendered = function() { 
    Session.setDefault("formElementCount", 0);
    var count = 0;
    var form = this.find("#quote-form");
    console.log(form);
    if(!!form){
        for(i = 0; i < form.length; i++){
            value = form.elements[i].value;
            if(value != "" || value != null)
                count++;
        }
        console.log(count);
        Session.set("formElementCount", count);
    }
}

然后作为模板中的助手

Template.myFormTemplate.numFormsCompleted = function() { 
    var count = Session.get("formElementCount");
    return count;
}

这样,无论何时呈现表单模板,它都会在您的帮助程序中反应性地为您提供元素计数,并且作为额外的奖励,您也可以在其他模板中使用它。