2015-10-19 78 views
1

我正在使用meteor reactive-var包。我怎樣才能獲得在模板的js文件中定義的匿名函數中的反應變量? viewer.js:在匿名函數中獲取ReactiveVar

Template.viewer.helpers({ 
    counter: function() { 
     return Template.instance().counter.get(); 
    } 
}); 

Template.viewer.onCreated(function() { 
    this.counter = new ReactiveVar(0); 
}); 

Template.viewer.onRendered(function(e){ 
    viewerRendered(); 
}); 

function getCounter() { 
    // !!Return reactive counter variable 
} 

function viewerRendered() { 
    var counter = getCounter(); 
    $(document).trigger("ViewerCreated",counter); 
} 

謝謝。

回答

1

如果您需要通過onRendered()回調訪問當前模板在外部功能,您有多種方式:

  1. 使用外部函數作爲直接回調:

    Template.viewer.onRendered(viewerRendered) 
    
    function viewerRendered() { 
        let currentTemplate = this 
        //... 
    } 
    
  2. 通過當前模板作爲參數:

    Template.viewer.onRendered(function() { 
        viewerRendered(this) 
    }) 
    
    function viewerRendered(currentTemplate) { 
        //... 
    

JavaScript函數非常靈活,因爲this是動態的,還有其他方式可以訪問數據。
上面兩個是簡單的用例。

你可以做任何你想要的模板,比如訪問它的data,使用subscriptions ...