Jquery 如何在knockout中不断更新视图的数据索引值

Jquery 如何在knockout中不断更新视图的数据索引值,jquery,knockout.js,Jquery,Knockout.js,我要创建一个收件箱消息下拉列表,如下所示 消息的相对时间是通过时间JS显示的。下面的代码片段显示了最终结果。但这段代码的问题是,以毫秒为单位的时间不会以间隔更新,以显示毫秒与当前日期的相对时间。所以我尝试在方法中使用set interval 非设置间隔示例(工作正常,但第一次更改后最终转换时间不会更改) 姓 var viewmodel={ 人物:柯·埃雷([ {名字:'Bert',消息:'Bertington',创建日期:1540887096175}, {名字:'Charles',留言:'

我要创建一个收件箱消息下拉列表,如下所示

消息的相对时间是通过时间JS显示的。下面的代码片段显示了最终结果。但这段代码的问题是,以毫秒为单位的时间不会以间隔更新,以显示毫秒与当前日期的相对时间。所以我尝试在方法中使用set interval

非设置间隔示例(工作正常,但第一次更改后最终转换时间不会更改)


姓
var viewmodel={
人物:柯·埃雷([
{名字:'Bert',消息:'Bertington',创建日期:1540887096175},
{名字:'Charles',留言:'Charlesforth',创建日期:1540887096175},
{firstName:'Author',message:'Dentiste',创建日期:1540887096175}
])
};
viewmodel.converttime=函数(毫秒){
返回时刻(毫秒);
};
应用绑定(视图模型);

以下是我经常采用的方法:

您可以创建一个时钟类/对象,该类/对象公开封装在可观察对象中的
时刻。时钟负责每
x
ms更新一次这个时刻

每当你在一个
计算的
中使用这个时刻时,你就会有一个自动更新的值

const Clock=(freq)=>{
设active=null;
const now=ko.可观测(矩());
const tick=()=>now(moment());
常量循环=()=>{
活动=设置超时(循环,频率);
勾选();
}
返回{
now:ko.pureComputed(now),//只读
开始:循环,
停止:()=>clearInterval(活动)
}
};
函数App(){
常数时钟=时钟(1000);
const creationTime=矩();
常量启动时间=时刻()。添加(1,“分钟”);
this.countDown=ko.pureComputed(
()=>launchTime.from(clock.now())
);
this.stopwatch=ko.pureComputed(
()=>clock.now().diff(creationTime,“秒”)
);
clock.start();
}
ko.applyBindings(新应用程序())

启动前的时间:


时间流逝:

好的,我现在掌握了这项技术,但是如何将时间戳传递给它呢?我添加了一个使用消息数据的示例