Backbone.js模型 - 如何持久化不在服务器端的属性?

时间:2014-06-01 22:49:36

标签: javascript backbone.js

在我的应用程序中,“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显示响应实际设置正确,但在收集之后,歌曲模型似乎没有反映出响应。无论如何,解析方法似乎不是正确的做法,所以我想知道是否有人知道更好的方法来解决这个问题?

谢谢, 安东

0 个答案:

没有答案