在我的应用程序中,“Song”模型拥有一些严格的客户端属性,例如“sound”属性,该属性在第一次播放歌曲时保存从SoundCloud请求的歌曲数据。同样,属性“播放”可以很容易地确定在渲染视图时歌曲模型当前是否正在播放。
由于问题“Exclude model properties when syncing (Backbone.js)”我在同步到服务器时能够将属性列入黑名单,但是当我在Song集合上调用fetch()时会出现问题,因为黑名单属性被覆盖。
我已经尝试覆盖宋集合的解析方法(此处推荐:How can I persist custom attributes over a collection fetch),但无济于事。
parse: function(response) {
// ensure that the value of the black-listed attributes for any of the models
// is persisted into the model in the new collection
this.each(function(song) {
var newSong = _.find(response, function(responseSong) {
return song.get('_id') == responseSong._id.$oid;
});
_.each(Song.blacklist, function(attr) {
newSong[attr] = song[attr];
});
});
return response;
}
一个console.log显示响应实际设置正确,但在收集之后,歌曲模型似乎没有反映出响应。无论如何,解析方法似乎不是正确的做法,所以我想知道是否有人知道更好的方法来解决这个问题?
谢谢, 安东