2015-04-23 42 views
1

我的CoffeeScript流星onRendered不ironRouter

Template.shiftDataTable.onRendered (-> 
    App.datatables() 
    $('#shift-list-table').dataTable 
    pageLength: 10, 
    "order":[[0, "asc"]] 

    $('.dataTables_filter input').attr('placeholder', 'Search') 
) 

我的玉模板

.table-responsive 
    table#shift-list-table.table.table-vcenter.table-condensed.table-hover 
    thead 
     tr 
     th Shift Code 
     th Shift Type 
     th Shift Start Date 
    tbody 
     each shifts 
     tr 
      td {{code}} 
      td {{type}} 
      td {{formatDate createdAt}} 

問題是,當我去這個頁面使用ironRouter(Router.go,pathFor)工作, onRendered將在渲染之前運行。

+1

這是一個非常不尋常的組合,咖啡和玉石。我假設你可以得到更多的答案,如果你試圖轉換爲JS和空格鍵。此外,路線信息(您是否等待訂閱?)不完整。我很樂意提供幫助,但對我而言,您的例子中有太多未知數。 – Stephan

+0

我也見過這種行爲,並知道他的意思。我通常使用'setTimeout'(100ms通常足以模擬一個良好的onReady外觀和感覺)。我認爲這是訂閱。試試這個:https://github.com/iron-meteor/iron-router/blob/devel/Guide.md#wait-and-ready和這個:http://stackoverflow.com/a/26996765/1523072 –

回答

0

當這發生在我身上,我用Tracker.afterFlush()

Template.shiftDataTable.onRendered (function() { 
    Tracker.afterFlush (function() { 
    App.datatables() 
    $('#shift-list-table').dataTable 
     pageLength: 10, 
     "order":[[0, "asc"]] 

    $('.dataTables_filter input').attr('placeholder', 'Search') 
    }); 
}); 

調度功能下次的沖水過程中被調用,或以後在 如果是在進步,畢竟無效當前平齊 計算已重新運行。除非再次調用afterFlush,否則該函數將運行一次,而不會在後續刷新中運行。

Ref