gpt4 book ai didi

javascript - 当前日期更改时触发 Backbone.js 事件

转载 作者:行者123 更新时间:2023-12-03 23:08:34 28 4
gpt4 key购买 nike

有没有一种简单的方法可以在当前日期(只是日期,不是时间)发生变化时触发 Backbone.js 事件?

最佳答案

所以,这个问题的答案 - 没有简单的方法而不推出自己的解决方案。

也就是说,实现还不错。

此处的想法是您拥有一个具有“day”属性的模型。初始化模型后,我们将调用一个初始化程序来确定到“明天午夜”的持续时间。午夜过后,setTimeout 将被调用,这将更新模型的“day”属性。在 View 本身中,我们监听“day”属性的变化。更新属性后,我们将重新初始化更改日期的方法。这样就没有轮询,一旦日期更改,您的事件就会被触发。

当然,您可以通过多种方式广播更新 - 即显式触发事件而不是设置属性 - 但这是我上面描述的代码:

型号

var Model = Backbone.Model.extend({
defaults: function(){
var d = new Date();
return {
day: d.getDay()
}
},
initialize: function(){
_.bindAll(this, '_init_date_trigger');
this._init_date_trigger();
},
_init_date_trigger: function(){
var now = new Date();
var midnightTomorrow = new Date();
midnightTomorrow.setDate(now.getDate() + 1);
midnightTomorrow.setHours(0,0,0,0);
var msTillTomorrow = midnightTomorrow - now + 1;
var me = this;
console.log("date will be changed in " + msTillTomorrow);
setTimeout(function(){
me.set("day", new Date().getDay());
me._init_date_trigger();
}, msTillTomorrow);
}
})

查看

var View = Backbone.View.extend({
template:_.template("The day is: <span class='day'> <%= day %> </span>"),
initialize: function(){
this.model.on("change:day", this.render);
},
render: function(){
this.$el.html( this.template( this.model.toJSON() ) );
return this;
}
});

实现

var myModel = new Model();
var myView = new View({model: myModel});
$("#example").html( myView.render().el );

这是 fiddle :http://jsfiddle.net/6KGzt/4/

关于javascript - 当前日期更改时触发 Backbone.js 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16473100/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com