Ruby on rails 主干回调函数,成功不触发代码
我正在做一个简单的AJAX调用,将专辑的曲目添加到无序列表中。它将在第二次单击时使用以下代码附加曲目:Ruby on rails 主干回调函数,成功不触发代码,ruby-on-rails,ajax,backbone.js,callback,mouseevent,Ruby On Rails,Ajax,Backbone.js,Callback,Mouseevent,我正在做一个简单的AJAX调用,将专辑的曲目添加到无序列表中。它将在第二次单击时使用以下代码附加曲目: window.app.views.AlbumView = Backbone.View.extend({... events: { 'click .queue-add' : 'selectAlbum', 'click .show-tracks' : 'showTracks', 'click .hide-tracks' : 'hideT
window.app.views.AlbumView = Backbone.View.extend({...
events: {
'click .queue-add' : 'selectAlbum',
'click .show-tracks' : 'showTracks',
'click .hide-tracks' : 'hideTracks',
},
showTracks: function(){
_this = this
this.model.getTracks().forEach(function(track){
_this.$el.find('.tracks').append("<li>"+track.attributes.title+"</li>");
});
},
我找不到你在哪里调用了回调。您可能需要修改“getTracks”方法,如下所示:
getTracks: function(callback) {
this.tracks.fetch();
callback(this.tracks); //you need to invoke the callback before return
return this.tracks;
}
这就是所谓的“回调模式”,谷歌会发现更多
主干模型的fetch方法accept option参数,它是一个具有两个键(success和error)的对象,这两个键都是函数。如果提供此参数,主干将自动调用它们
希望有帮助。getTracks看起来像什么?只是在帖子中添加了以下内容。getTracks:function(){this.tracks.fetch();return this.tracks},为什么不
getTracks:function(opts){this.tracks.fetch(opts).
?和\u this=this
创建一个全局变量,您可能需要var\u this=this
。好主意,这让我走上了正确的轨道,必须将成功回调放在fetch中,而不是get轨道中
app.models.Album = Backbone.Model.extend({
....
getTracks: function() {
this.tracks.fetch();
return this.tracks
},
....
});
getTracks: function(callback) {
this.tracks.fetch();
callback(this.tracks); //you need to invoke the callback before return
return this.tracks;
}