【发布时间】:2013-05-28 00:22:40
【问题描述】:
我正在执行一个简单的 AJAX 调用,以将专辑的曲目附加到无序列表中。它将在第二次单击时使用此代码附加曲目:
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>");
});
},
很明显,在第一次点击之前没有及时获取曲目,所以我在 showTracks 方法中添加了一个回调函数,如下所示:
showTracks: function(){
_this = this
this.model.getTracks({
success: function(tracks){
console.log(tracks);
tracks.forEach(function(track){
_this.$el.find('.tracks').append("<li>"+track.attributes.title+"</li>");
});
}
});
},
但它不会进入块和console.log(tracks);没有向控制台添加任何内容。
这里的任何提示都会非常棒,谢谢!!
app.models.Album = Backbone.Model.extend({
....
getTracks: function() {
this.tracks.fetch();
return this.tracks
},
....
});
【问题讨论】:
-
getTracks长什么样子? -
刚刚在帖子中添加了以下内容。 getTracks: function() { this.tracks.fetch();返回 this.tracks },
-
为什么不
getTracks: function(opts) { this.tracks.fetch(opts); ...?而_this = this创建一个全局变量,你可能想要var _this = this。 -
好主意,这让我走上了正轨,必须将成功回调放在 fetch 中,而不是 get 轨道中
标签: ruby-on-rails ajax backbone.js callback mouseevent