簡體   English   中英

從template中調用幫助程序函數。在Meteor.js中呈現,錯誤為1.0,精細為0.9.3

[英]Calling helper functions from within template.rendered in Meteor.js, error in 1.0, fine in 0.9.3

為了避免重復代碼,我發現擁有可以從foo.rendered函數(例如)中調用的輔助函數很有用。 為什么在Meteor的0.9.3中可能出現這種情況,但在1.0中會引發錯誤?

Template.foo.helpers({
  'fooFn' : function(){
     return "something"  
  }
});

Template.foo.rendered = function(){
  var something = Template.foo.fooFn();
}

我應該更改foo.rendered中的語法(我稱錯嗎?)還是應該完全使用其他方法(在helpers({})和render()外部設置函數並調用它們?還是將其設置為a注冊助手功能?

從Meteor 1.0.3.1開始,似乎可以找到並調用輔助函數,盡管很明顯, 應該這樣使用它。

仍然可以做到:

Template.foo.__helpers[" fooFn"]()

請注意函數名稱的前導空格。

解決此問題的另一種方法是將函數附加到全局名稱空間,然后從代碼中的其他位置調用該功能,如user3557327所述。

另外,您可以使用:

Template.registerHelper('myHelper', function (){return 'Look At Me!'})

注冊全局助手,並使用以下命令顯式調用它:

UI._globalHelpers['myHelper']()

我認為這將是一個更好的方法: 如何在模板幫助器中使用Meteor方法

定義一個函數並將其附加到模板。 從渲染的以及模板幫助器中調用該函數。 就像MrMowgli所說的那樣,您可能不是“應該”從.js文件中調用模板幫助程序,而只是從...中調用,將來可能會中斷。

例如,定義一個函數並將其附加到模板上:

Template.Play.randomScenario = function () { // HACK HACK HACK }

然后從生命周期方法中調用它

Template.Play.created = function () {

  Template.Play.randomScenario();

};

scenario: function () {
    return Template.Play.randomScenario();;
  },

我有同樣的問題,這是我使用的解決方案。 希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM