gpt4 book ai didi

javascript - Marionette 事件,从子事件到父事件的异步回调?

转载 作者:行者123 更新时间:2023-11-28 08:07:11 25 4
gpt4 key购买 nike

我有一个索引 View ,它调用集合,因此调用项目 View 。用户可以在索引模板中勾选项目,然后单击复制。

下面的代码工作正常,该项目在索引中触发了一个事件。然而,问题是,我希望能够知道所有事件何时完成复制这些帖子。我能想到的唯一方法是将复制逻辑移动到索引 View 中,但我确实认为这是一个项目 View 操作。

帖子/index.js

// copy posts from the collection
onClickCopyPosts: function() {
// are we sure we want to delete these posts
var platform = $('#copyPlatforms option:selected').val();
if (confirm('Are you sure you want to copy these posts to that platform?')) {
// get the post ids of the ticked posts
var postIds = this.getSelectedPostsArray();
_.each (postIds, function (postId, key) {
MyApp.vent.trigger('post:copy:'+postId, platform);
})
}
},

item.js

    initialize: function () {

var that = this;

this.listenTo(MyApp.vent, 'post:copy:'+this.model.get('id'), function(platform) {
// fetch the collection and pass its filters through
that.onCopy(platform);
});
},

onCopy: function(platform) {

// copy the current model to a new variable
var modelJSON = this.model.toJSON();

// set platform to the platform passed to the method
modelJSON.platform = platform;

modelJSON = Factory.create(modelJSON);

// create a new instance of that model
var newModel = new Model(modelJSON);

// save the new model
newModel.save({}, {
success: function() {
//console.log('copy post', 'success');
},
error: function() {
//console.log('copy post', 'error');
},
complete: function() {
//console.log('copy post', 'complete');
}
});
return;
},

最佳答案

我认为您应该重新设计它以保存一组模型,而不是为每次保存触发一个事件。这样你就可以使用 Jquerys 监听一组 XHRS $.when当一切完成后触发回调。

参见Brian Mann's solution他允许任意数量的可同步 Backbone 实体触发 "when:fetched" 事件,但同样可以用于保存模型。好Video关于这一点。

关于javascript - Marionette 事件,从子事件到父事件的异步回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24679881/

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