如何在每次触发按钮单击事件时调用辅助函数

时间:2017-04-17 07:02:57

标签: meteor

我有一个模板,其中我试图通过按钮单击上的辅助函数调用来设置输入元素的值。对于第一次单击尝试,一切正常,但是第二次单击虽然函数被调用,但值不是' t在输入元素中设置。 以下是我的代码:

Registration.html `               找到我的位置

            

    <div class="form-group input-group" id="div_familyaddress">
      <span class="input-group-addon"><span class="glyphicon glyphicon-map-marker"></span></span>
      <input type="text" class="form-control" placeholder="Family Address" name="txt_address" id="txt_address" value = "{{location}}">
    </div>`

Registration.js

Template.Registration.helpers({
  location:function(){
       var x =  Session.get('location');
       return x;
     }
 });
Template.Registration.events({
'click #btn_findlocation':function(){
  Session.set('location', 'New York');
  Template.Registration.__helpers.get('location').call()

})// end of Template.geocompleteExample.events

2 个答案:

答案 0 :(得分:3)

帮助器是Blaze调用的一个函数,用于帮助它呈现数据。它不是你想要手动调用的东西。你真正要问的是:我如何调用我的事件处理程序和助手共同的代码?

有不同的方法。最简单的方法是将常用函数添加到文件范围。 e.g。

const commonFn = function() {
    return 5;
}

Template.foo.helpers({
    bar() {
        return commonFn();
    }
});

Template.foo.events({
    'click .baz': function() {
        return commonFn();
    }
});

另一种方法是将公共函数定义为模板的一部分,并将其分配给反应式var:

Template.foo.onCreated(function() {
    commonFn() {
        return 5;
    }

    this.common = new ReactiveVar(commonFn);
});

Template.foo.helpers({
    bar() {
        return Template.instance.common.get();
    }
});

Template.foo.events({
    'click .baz': function(event, template) {
        return template.common.get();
    }
});

答案 1 :(得分:1)

模板助手非常适合模板绑定,但也可以手动调用。

 JSONArray userList = JSONFile.readJSONArray("users.json");
 JSONArray newuserList = new JSONArray() ;  
 JSONObject jsonobject , newjsonObject;
            for (int i = 0; i < userList.size(); i++) {
                jsonobject = (JSONObject) userList.get(i);

                String id = (String) jsonObject.get("id");
                String pass = (String) jsonObject.get("password");
                newuserList.add(jsonObject); 
 // Here we are putting json object into newuserList which is of JSONArray type
            try{
                FileWriter  file = new FileWriter( "/users.json",false);

                newuserList.writeJSONString(newuserList, file);
                file.close();
            }
            catch(Exception e  ){

                e.getMessage();

            }

上面的这个助手可以直接从任何代码中调用:

   Template.registerHelper('getCompanyName', function(companyId) {
return Meteor.CompanyHelper.getCompanyName(companyId) });

Meteor.CompanyHelper = {

getCompanyName: function(companyId) {
    var company = Companies.findOne({_id: companyId});
    if(company) {
        return company.name;
    }
}}

希望这有助于你