Backbone初始收集数据和后续提取

时间:2012-02-22 12:10:53

标签: ruby-on-rails backbone.js

根据Backbone文档的建议,当我的Rails应用程序呈现html时,我为我的集合提供了初始数据:

<script>
MyCollection.reset(<%= @items.to_json %>)
</script>

现在,当用户触发特定路线时,她继续#search/cats,我再次获取该集合,如下所示:

MyCollection.fetch({ data : { "query" : "cats" }})

问题在于,当用户返回时,如何使用初始数据重新设置Collection

1 个答案:

答案 0 :(得分:1)

不要将该代码放在一个块中。它需要在一个JavaScript文件中,在您可以随时调用的方法中。

但仍需要从HTML文件中获取数据。为此,您需要创建一个可以从脚本块传递给它的数据的对象。然后,您可以存储数据并在以后需要时使用它:


<script src="/js/myApp.js"></script>
<script>
  MyApp.initialize();
</script>

您的“myApp.js”文件将包含带有“initialize”方法的对象定义:


MyApp = {
  initialize: function(data){
    this.data = data;
    this.resetCollection();
  },

  resetCollection: function(){
    MyCollection.reset(this.data);
  }
};

现在,无论何时需要,您都可以致电MyApp.resetCollection并让它使用您开始使用的数据重置该集合。

当然,有很多方法可以实现这一点。我只向您展示最基本的版本。