2017-02-10 94 views
2

我想要AngularJS過濾器timeAgo應該應用於時間戳以顯示時間戳從時間戳。這是一個容易:AngularJS:如何實現Live TimeAgo過濾器?

filter('timeago', function() { 
    return function(input) { 
    return Date.now() - input; 
    } 
}); 

但是,當我想讓它LIVE(當用戶在頁面上 - 我們更新值每秒/每摘要)它似乎並不那麼容易。我們不會更改輸入值,因此不會重新計算過濾器。 是否有可能在不添加額外參數的情況下每秒重新計算一次?

Fiddle示例。

  • 我不在尋找現成的圖書館(如角時刻)。對於我如何在AngularJs中實現這樣的概念更有意思。
+0

你能解釋爲什麼你想讓這樣的過濾器不是一個指令嗎?還有其他例子嗎? –

+0

它應該做的角度相同amTimeAgo過濾器 –

回答

1

這是因爲過濾器現在是無狀態的,以使其成爲此過濾器工作,你需要做的:

function timeagoFilter(input) { 
    return Date.now() - input; 
} 

timeagoFilter.$stateful = true; 

return timeagoFilter; 

而我個人倒把它變成一個指令,並改變與價值普通的javascript - 如果僅僅是爲了顯示的目的 - 因爲很容易搞亂文摘週期並使應用程序性能下降

+0

太棒了!這就是我一直在尋找 –

+0

這個過濾器不會工作,如果您的摘要需要超過1毫秒。實際上它以$ rootScope:infdig錯誤結束。 –

+0

@PetrAveryanov我認爲你做錯了,如果你有無限的摘要錯誤 – maurycy