角度过滤器在模型更新后不会更新视图

时间:2016-12-14 16:47:39

标签: javascript angularjs

我创建了一个自定义过滤器,这是我的测试视图来探测它:

<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设置为&#39; dd / mm / yyyy&#39;然后我回到我的测试视图,它仍然是相同的:

2014-05-24
2010-10-28

我必须按f5才能看到预期的变化:

24/05/2014
28/10/2010

如何监听模型中的更改以更新过滤器?

2 个答案:

答案 0 :(得分:1)

函数/*union*/ struct coordinates { /*struct*/ union { double X; double U; }; /*struct*/ union { double Y; double V; }; /*struct*/ union { double Z; double W; }; }; 中捕获了

userDate格式。如果用户偏好改变,它将不会被改变。您想要的是在执行过滤器时获取用户日期格式。尝试:

userDateFilter

答案 1 :(得分:0)

你是如何改变模型的? I:在某些情况下,你会想要将它包装在一个角度$ timeout()中,因为它会影响下一个周期。尽量避免使用$ apply()陷阱。