从其他模板相关函数调用helpers函数

时间:2016-02-11 07:27:17

标签: javascript meteor handlebars.js meteor-blaze

Template.myTemplate.rendered 函数(或其他模板函数),我想调用其他util函数。不确定如何以流星方式进行。

我试过

 Template.myTemplate.rendered = function(){
   console.log("chat Interface rendered");
   Template.myTemplate.__helpers.get('someFunction');
 };


 Template.myTemplate.helpers({
   'isEditable': function () {
     return Session.get('editable');
   },
   'someFunction':function () {
     console.log("someFunctionis called");
     //More stuff here

   }
});

这没有按预期工作。有没有标准的方法呢?

2 个答案:

答案 0 :(得分:2)

在我看来,你是在滥用template helpers。通常,它们用于将数据导入模板而不是用于控制UI元素。

因此,我建议您创建一个常规JavaScript函数,然后在onRendered回调中调用它:

function disableChatBtn() {
  console.log("disableChatBtn is called");
  $('#btn-chat').prop('disabled', true);
}

请注意: Template.myTemplate.rendered在Meteor版本1.0.4.2(及更高版本)中已弃用,请改用 Template.myTemplate.onRendered

例如:

Template.myTemplate.onRendered(function() {
  console.log("chat Interface rendered");
  disableChatBtn();
});

答案 1 :(得分:0)

您可以创建一个流星方法,并在代码中的任何位置使用它。您也可以从其他方法调用方法。

Meteor.methods({
  someMethod: function (param) {
    //do stuff
  }
});

var result = Meteor.call('someMethod', param);