2016-12-14 77 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()陷阱。