簡體   English   中英

模型更新后角度濾鏡不會更新視圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM