【问题标题】:Why do BackboneJs Collections have URL's?为什么 BackboneJs 集合有 URL?
【发布时间】:2013-05-28 04:06:08
【问题描述】:

我开始使用backbone.js,我很困惑为什么你可以用很多不同的方式指定url。除了模型 url 函数之外,集合 url 似乎没有在任何地方使用。那么只在我所有的模型上设置 urlroot 并且从不使用集合 url 有什么害处吗?

【问题讨论】:

    标签: backbone.js backbone.js-collections backbone-model


    【解决方案1】:

    这完全没有坏处,您可以在模型级别进行更新、删除等工作,但当您想一次从服务器获取一组模型时,这样做很方便。

    Books = Backbone.Collection.extend({
        url : "/books"
    });
    books = new Books();
    books.fetch(); // this will line will make a GET request to your backend, the result will
                   // be a list of models.
    

    【讨论】:

    • 如果这个集合不应该包含模型的所有实例,那么 fetch 如何知道要获取哪些模型?就像我有一个学生模型、一个学生集合和一个包含学生集合的班级模型一样,我是否只需要手动设置每个学生集合的 url 以某种方式与班级模型的 id 相关?
    • 作为 Javascript 中的每个属性,它可以是一个值或一个函数,对于这个特定的示例,您可以使用一个函数来“计算”班级学生集合的路线。像 url : function (){ retunr "students" + class.id;} 这样,当你实例化你的类时,你可以调用 this.class.students.fetch();
    【解决方案2】:

    在 Backbone.js 中,模型和集合与“结构化”数据相关,而 Backbone 提供了执行此操作的方法。使用 Restful 路由,您通常需要这样的更新/获取:

    GET /students
    [{name: "...", ...}]
    
    GET /students/1
    {name: "..."}
    

    正如您所观察到的,URL 是相似的,但在大多数情况下,处理 Collection 和 Model fetch 的响应看起来会有所不同。由于从概念上讲,模型是集合的一部分,因此模型 URL 在大多数情况下可以从集合中解析。还有其他 API 的模型和集合不匹配,您需要自己设置 URL(例如会话模型,不属于集合)

    也许它也有助于比较模型和集合获取的文档:

    这也可能有助于理解 Backbone 的思维方式:http://jonathanotto.com/blog/backbone_js_for_the_everyman.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      • 2013-02-09
      • 1970-01-01
      相关资源
      最近更新 更多