javascript - 多次触发 knockout 点击事件

标签 javascript jquery jquery-mobile cordova knockout.js

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

在 JqueryMobile pageInit 中,我定义了sampleViewModel(),如下所示。

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

//上述 View 模型的变量声明

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)有没有办法让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();

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

关于javascript - 多次触发 knockout 点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23423439/

相关文章:

javascript - 在 html5 中不缓存图像的最佳方法是什么?

android - Android 4.1.2 应用程序上未显示日期/时间选择器

javascript - 如何在 JavaScript 中获取查询字符串值?

javascript - 如果使用重定向,JS 脚本将无法正常工作

javascript - jQuery 的窗口加载包装器

javascript - 是否可以在弹出窗口中加载另一个 php 文件

jquery - nivo slider 标题中的 z-index 问题

asp.net - Jquery日期选择器: validate date mm/dd/yyyy

javascript - Jquery Mobile : getting error with mobile. 页面加载()

jquery - 用于测试和调试 HTML5 手机游戏的开发平台/模拟器