角度过滤器:重新应用于对象属性

时间:2017-03-22 19:25:36

标签: javascript angularjs angularjs-scope angular-filters

我正在使用Angular版本1.6.1。 我有一个事件对象数组,使用ng-repeat加载到dom中。 事件具有以下属性:

{
city: ""
hash: ""
timestamp: 1234578910
noCount: 1
unknownCount: 2
yesCount: 2
}

如您所见,事件有时间戳。使用过滤器转换此时间戳:

app.filter('dateFilter', [function () {
return function (v) {
    let operationDate = new Date(v);
    let day = 'Yesterday: ';
    if (new Date(v).setHours(0, 0, 0, 0) == new Date().setHours(0, 0, 0, 0)) {
        day = 'Today: ';
    }
    let minutes = operationDate.getMinutes();
    return day + operationDate.getHours() + ':' + (minutes < 10 ? "0" : "") + minutes;
  };
 }
]);

这里我的ng-repeat:

  <div ng-class="getHighlight(operation.timestamp)" style="margin-top: 10px;">
    <div class="row">
        <h3 class="col-md-6 col-xs-6">
            {{operation.city}}
        </h3>
        <div class="col-md-6 col-xs-6" style="text-align: right;">
            <h3>
                {{operation.timestamp | dateFilter}}
            </h3>
        </div>
    </div>
 .
 .
 .
 .
 </div>

我定期从API获取数据,并在事件参与者更改时更新(每5秒钟)。 我遇到的问题是,当新的一天开始时,过滤器不会将前缀更新为:&#34;昨天&#34;。

有没有办法重新应用过滤器或强制重新加载特定的DOM元素?

1 个答案:

答案 0 :(得分:0)

使用$scope.$apply()代替演示

的setTimeout fiddle here

另一个是join()迫使他们重新投降但是 timeout is safer