簡體   English   中英

如何從Meteor 0.8.0 Blaze中的助手訪問模板實例

[英]How to access template instance from helpers in Meteor 0.8.0 Blaze

Meteor 0.8.0中Template.foo.rendered回調的行為更改意味着,只要模板內容發生變化,我們就不會自動使用渲染回調作為操作DOM的方法。 實現此目的的一種方法是使用https://github.com/avital/meteor-ui-new-rendered-callback中的反應性助手。 理論上,反應助手只有在相關項目發生變化時才會被觸發,從而有助於提高績效。

但是,現在出現了一個新問題:幫助程序不再能夠訪問模板實例,就像過去使用的rendered回調一樣。 這意味着用於維護模板實例上的狀態的任何操作都無法通過幫助程序完成。

有沒有辦法訪問模板實例的狀態以及使用反應式助手來觸發Blaze中的DOM更新?

在最新版本中,您可以使用更方便的Template.instance()

現在有了Template.instance() ,它允許您在幫助程序中訪問模板的實例。 例如

Template.myTemplate.helpers({
    myvalue: function() {
        var tmpl = Template.instance();

        ...
    }
});

與reactiveDict一起,您可以使用它們傳遞渲染回調中設置的值。

Template.myTemplate.created = function() {
    this.templatedata = new ReactiveDict();

}
Template.myTemplate.rendered = function() {
    this.templatedata.set("myname", "value");
};

Template.myTemplate.helpers({
    myvalue: function() {
        var tmpl = Template.instance();
        return tmpl.templatedata.get('myname');
    }
});

目前正在追蹤0.8.0 Meteor中的“首先要添加的內容之一”:

https://github.com/meteor/meteor/issues/1529

另一個相關問題是能夠在呈現的回調中被動地訪問數據,這首先避免了這個問題:

https://github.com/meteor/meteor/issues/2010

暫無
暫無

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

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