我有一个具有IsRecent(bool)项目的淘汰赛observableArray。 IsRecent表示更新的记录是在一分钟之前/之下完成的。当IsRecent为true时,我使用cout击败使用knockout attr的行。当我从数据库加载knockout 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);
}
});
}
viewModel:
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"}]
}