gpt4 book ai didi

javascript - backbone.js 在事件(发泄)完成时做些什么?

转载 作者:行者123 更新时间:2023-11-30 06:35:18 25 4
gpt4 key购买 nike

$('button').click(function(){
App.vent.trigger("box:change");
});

App.BoxView = Backbone.View.extend({
initialize: function(options) {

this.listenTo( App.vent, "box:change", this.alter ); // animate, etc.
},

...

});

我有一个主要观点,我希望在(和/或)时做一些改变:

  1. 事件由我所有的盒子处理
  2. 我所有的盒子都有一些动画

无法解决这个(漫长的工作日)...请帮忙=)什么是更好的做法?

我正在寻找这样的东西:

App.MainView = Backbone.View.extend({
initialize: function(options) {

// when all the events are complete
this.listenTo( App.vent, "box:change" ).onComplete( this.rearrange_stuff );

// when all the animations are complete
this.listenTo( App.animationBuffer, "box:fadeOut" ).onComplete( this.rearrange_stuff );

},

...

});

更新: 如果我的应用程序中有一长串事件 - 完成 - 事件 - 完成(不是循环),设置此队列的更好方法是什么?

最佳答案

使用 jquery 我找到了希望,只需要弄清楚我如何将它应用到我所有的 View 中..

http://api.jquery.com/promise/

(更新)

目前,我是这样做的... http://jsfiddle.net/Antonimo/YyxQ3/2/

App.vent = _.extend(Backbone.Events, {
promise: function(name){
if(typeof this._bills[name] === "undefined"){
this._bills[name] = 0;
} else {
this._bills[name] ++;
}
},
keepPromise: function(name){
var that = this;
setTimeout( function(){
if(typeof that._checks[name] === "undefined"){
that._checks[name] = 0;
} else {
that._checks[name] ++;
}
if(typeof that._bills[name] !== "undefined"){
if( that._checks[name] >= that._bills[name] ){
that._checks[name] = 0; // reset
that._bills[name] = 0; // reset
that.trigger(name); // emit event
}
}

}, 30);
},
_bills: {},
_checks: {}
});

// usage:

alter: function() {
App.vent.promise('some:event');
// Animate, or not..
App.vent.pay('some:event');
},

关于javascript - backbone.js 在事件(发泄)完成时做些什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14925141/

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