2015-09-11 2 views
-1

У меня есть следующие вспомогательная функция:Как вызвать помощника шаблона из одного файла?

Template.modal.helpers({ 
    permalink: function() { 
    var this_id = Session.get("pageId"); 
    var thisItem = Items.findOne({_id: this_id}); 
    // console.log("set page id to " + this._id) 
    return thisItem['permalink']; 
    } 
}); 

Я хочу назвать это в том же файле, я попытался

permalink(); 
this.permalink(); 

Это не сработало так, как я могу использовать эту функцию?

ответ

1

Если вам удастся вызвать помощника «вручную», это будет непросто или красиво. То, что вы хотите сделать, это объявить обычную функцию, которая может быть использована как помощник и ваш другой код, например:

function myPermalinkFunction() { 
    var this_id = Session.get("pageId"); 
    var thisItem = Items.findOne({_id: this_id}); 
    // console.log("set page id to " + this._id) 
    return thisItem['permalink']; 
} 

Template.modal.helpers({ 
    permalink: myPermalinkFunction 
}); 

/* elsewhere, within the same file */ 
    ... myPermalinkFunction() ... 

В Метеоре, что объявлено «глобально» с var или function фактически виден только в пределах его файл, поэтому вам не нужно беспокоиться о загрязнении глобального пространства имен. Если вам нужно предоставить конкретный контекст функции «помощник», вы можете сделать это, используя call или apply вместо обычного вызова.

0

Это зависит от того, где вы хотите вызвать функцию. Если это где-то еще (другая сфера из закрытия) в том же файле, а затем определить его заранее:

function permalinkHelper() {/* ... */ } 

Если вам необходимо получить доступ к нему в себе, имя функции и использовать это имя:

Template.modal.helpers({ 
    permalink : function permalinkHelper() { 
    permalinkHelper(); 
    } 
}); 

Второй случай - это рекурсивный вызов и требует условия остановки. Поскольку это написано прямо там, это закончится в InternalError: слишком много рекурсии.

Смежные вопросы