2016-12-14 162 views
0

我創建了一個自定義過濾器模型更新後認爲,這裏是我的測試,以便探測它:角度濾波不更新

<div>{{ 1400956671914 | userDate }}</div> 
<div>{{ 1288323623006 | userDate }}</div> 

這是基於angulars過濾器,並設置用戶根據日期格式了自己的偏好:

app.filter('userDate', function ($filter, userModel) { 

    var userDate = userModel.getPreferences().dateFormat; 
    // userDate = 'yyyy-mm-dd' 

    function userDateFilter (date) { 
    return $filter('date')(date, userDate); 
    }; 

    return userDateFilter; 

}); 

這是結果:

2014-05-24 
2010-10-28 

我有一個觀點,我更新m個奧德爾的usermodel並設置日期格式爲「DD/MM/YYYY」然後我回到我的測試數據視圖,它仍然是相同的:

2014-05-24 
2010-10-28 

我必須按F5查看預期的變化:

24/05/2014 
28/10/2010 

如何在模型中偵聽更改以更新過濾器?

+0

也許控制器被緩存,嘗試設置'cache:false'在你的路由狀態 – OsDev

回答

1

userDate格式在函數userDateFilter中被捕獲。如果用戶偏好改變,它將不會改變。您需要的是在執行過濾器時獲取用戶日期格式。嘗試:

app.filter('userDate', function ($filter, userModel) { 

    function userDateFilter (date) { 
    return $filter('date')(date, userModel.getPreferences().dateFormat); 
    }; 

    return userDateFilter; 
}); 
0

你是如何改變模型的? I:n在某些情況下,您希望將其包裝在角度$ timeout()中,因爲這會影響下一個週期。儘量避免$ apply()陷阱。