Javascript 多次触发敲除单击事件

Javascript 多次触发敲除单击事件,javascript,jquery,jquery-mobile,cordova,knockout.js,Javascript,Jquery,Jquery Mobile,Cordova,Knockout.js,我正在开发一个使用jquerymobile和knockout的单页phonegap应用程序 在jQueryMobilePageInit中,我定义了sampleViewModel(),如下所示 function sampleViewModel() { var self=this; var hourvalue=14; self.sample_data= ko.observableArray([ { title: "hello", hour:hourvalue }

我正在开发一个使用jquerymobile和knockout的单页phonegap应用程序

在jQueryMobilePageInit中,我定义了sampleViewModel(),如下所示

function sampleViewModel()
{
var self=this;
var hourvalue=14;
self.sample_data= ko.observableArray([
            { title: "hello", hour:hourvalue }    
        ]);
}
//上述视图模型的变量声明

var sample_datavar = { viewModel: new sampleViewModel() };
我想根据当前系统小时值更改小时值。如果有更好的解决方案,我们将不胜感激

我正在尝试以下逻辑,其中我将每秒获取系统小时数,并通过变量赋值将其传递给数据源

setInterval(function () {
        var now = new Date();
        var hour = now.getHours();
        if (hour.toString().length == 1) {
            var hour = '0' + hour;
        }

sample_datavar.viewModel.sample_data([
            { title: "hello", hour:hourvalue }    
        ]);
  },1000);
问题是我只能在pageinit调用函数中的click事件中定义它

1) 有没有办法让knockout click函数在jquery mobile的pageshow事件中触发


2) 如果我把事情复杂化了?。有没有更好的方法来处理小时值的变化?

首先,请不要每秒钟检查一次时间是否发生了变化,这会伤害我的眼睛:)--除非系统的时间发生了意外的变化

那你为什么需要点击事件呢?你为什么不在装货时开始检查,然后再检查一遍又一遍呢

您可以在下一次检查之前计算秒数(您可以在不进行检查的情况下设置新的小时数):

function sampleViewModel()
{
    var self=this;
    var hourvalue=14;
    self.sample_data= ko.observableArray([
            { title: "hello", hour:hourvalue }    
        ]);
}

var viewModel = new sampleViewModel();
ko.applyBindings(viewModel);

function checkHour() {
        var now = new Date();
        var hour = now.getHours();
        var secondsBeforeNextCheck = 3600 - now.getMinutes() * 60 - now.getSeconds() +1;
        document.getElementById('calculatedSeconds').innerHTML = secondsBeforeNextCheck;
        if (hour.toString().length == 1) {
            var hour = '0' + hour;
        }

        viewModel.sample_data([
            { title: "hello", hour:hour }    
        ]);
        setTimeout(checkHour, secondsBeforeNextCheck * 1000);
}

checkHour();