我创建了一个自定义过滤器,这是测试它的测试视图:
<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;
});