【问题标题】:Triggering knockout click event multiple times多次触发敲除点击事件
【发布时间】:2014-06-18 20:39:07
【问题描述】:

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

在 JqueryMobile pageInit 中,我定义了 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 调用函数中的点击事件中定义它。

1)有没有办法让敲除点击功能在jquery mobile的pageshow事件内部触发?

2)如果让事情复杂化?..有没有更好的方法来改变小时值?

【问题讨论】:

    标签: javascript jquery jquery-mobile cordova knockout.js


    【解决方案1】:

    首先,如果时间改变了,请不要每秒检查一次,这会伤害我的眼睛:) --除非系统的时间应该意外改变。

    那你为什么需要点击事件呢?为什么不在加载时开始检查,然后一次又一次地检查?

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

    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();
    

    http://jsfiddle.net/7nBNW/2/

    【讨论】:

      猜你喜欢
      • 2012-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多