0

我有一个具有 IsRecent (bool) 项的淘汰 observableArray。IsRecent 表示更新的记录是否在一分钟前完成。当 IsRecent 为真时,我使用带有 css 的淘汰赛的 attr 突出显示该行。当我从数据库加载淘汰赛 observableArray 时,我通过 MVC ViewModel 进行计算。奇迹般有效。

现在,我不是一直加载整个表,而是只更新使用 ko.util.push/ko.util.replace 更改的记录/整行。这很好用...

当我推送/替换一条记录时,我想遍历整个表并更新一个微不足道的字段——IsRecent。问题是……如何?

我在下面做的似乎不起作用:

    function setIsRecentHighlight() {
       var now = new Date();
       ko.utils.arrayForEach(taskViewModel.tasks(), function(task) {
           var stamp = new Date(task.LastActivityStampUtc);
           var ms = Math.abs(stamp - now);
           if (ms > 60000 && task.IsRecent) {
              var index = taskViewModel.tasks.indexOf(task);
              task.IsRecent = false;
              taskViewModel.tasks.replace(taskViewModel.tasks()[index], task);
          }
       });
    }

视图模型:

var taskViewModel = {
    tasks: ko.observableArray()
}

任务有:

{"tasks":[
{"$id":"1","Name":"Report1","LastActivityStampUtc":"2013-01-14T12:52:14.420Z","IsRecent":true",
{"$id":"2","Name":"Report2","LastActivityStampUtc":"2013-01-14T12:47:32.700Z","IsRecent":false"}]
}
4

0 回答 0