[英]Angular filter does not update the view after model update
我創建了一個自定義過濾器,這是測試它的測試視圖:
<div>{{ 1400956671914 | userDate }}</div>
<div>{{ 1288323623006 | userDate }}</div>
這基於角度過濾器,並根據用戶自己的偏好設置用戶日期格式:
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
我有一個視圖,可以在其中更新模型userModel並將dateFormat設置為“ dd / mm / yyyy”,然后返回測試視圖,它保持不變:
2014-05-24
2010-10-28
我必須按f5鍵才能看到預期的更改:
24/05/2014
28/10/2010
如何收聽模型中的更改以更新過濾器?
userDate
格式在功能userDateFilter
捕獲。 如果用戶首選項更改,則不會更改。 您想要的是在執行過濾器時獲取用戶日期格式。 嘗試:
app.filter('userDate', function ($filter, userModel) {
function userDateFilter (date) {
return $filter('date')(date, userModel.getPreferences().dateFormat);
};
return userDateFilter;
});
您如何更改模型? 我:在某些情況下,您會希望將其包裝在一個有角的$ timeout()中,因為它的影響會在下一個周期發生。 嘗試避免$ apply()陷阱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.