我有一个模板,其中我试图通过按钮单击上的辅助函数调用来设置输入元素的值。对于第一次单击尝试,一切正常,但是第二次单击虽然函数被调用,但值不是' 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
答案 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;
}
}}
希望这有助于你