【问题标题】:Backbone initial Collection data and subsequent fetches骨干初始集合数据和后续提取
【发布时间】:2012-02-22 22:06:15
【问题描述】:

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

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

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

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

问题是,当用户返回时,如何使用初始数据再次重置Collection

【问题讨论】:

    标签: ruby-on-rails backbone.js


    【解决方案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 并使用您开始使用的数据重置集合。

    当然,有很多方法可以实现这一点。我只给你看最基本的版本。

    【讨论】:

    • 谢谢,有道理。所以一个解决方案是使用:&lt;script&gt;MyApp.initialize(&lt;%= @items.to_json %&gt;)&lt;/script&gt;,然后在控制器的某处引用this.initialData,不是吗?
    • 我会编辑您的回复以更好地匹配您提出的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多