【问题标题】:adding models to backbone collections将模型添加到主干集合
【发布时间】:2015-09-05 21:29:39
【问题描述】:

我有一个带有 4 个模型类的 rails 应用程序,每个表中有多个实例。我在 CoffeeScript 中创建了主干模型和集合类来匹配。我可以成功加载所有集合并可以在视图中呈现它们。到目前为止,一切都很好。这是我的收藏之一,及其相关模型:

class window.CoffeeWater.Collections.Histories extends Backbone.Collection
url: '/api/histories'
model: History

class window.CoffeeWater.Models.History extends Backbone.Model

我需要能够创建一个 History 模型对象,然后将其添加到 Histories 集合中。文档指出,我必须在创建新模型时设置一个“集合”属性,以便它从集合中获取“url”属性。我的问题是我似乎无法正确设置“集合”属性值,因为模型实例上没有设置 url 属性

attributes = {'start_time': new Date (1434740259016), 'stop_time': new Date (1434740259016 +(86400*1000)), 'valve_id': 2}
options = { collection: window.CoffeeWater.Collections.Histories }
history = new window.CoffeeWater.Models.History(attributes, options)
window.CoffeeWater.Objects.Collections.Histories.add(history)

检查生成的“历史”对象不会显示集合中已有模型中存在的相同属性,并且缺少 url 属性。

我现在不知所措。有没有人有如何做到这一点的例子? Backbone.js 文档没有显示任何相关示例。

【问题讨论】:

    标签: ruby-on-rails-4 backbone.js


    【解决方案1】:

    model中的url是这样定义的。

    如果模型中有 url 属性。

    class window.CoffeeWater.Models.History extends Backbone.Model
    url:'/api/history/1'
    

    然后当model.fetch()时,它会调用那个url。如果未找到此属性,它将查看关联的集合是否具有“url”。您尝试设置此集合变量。

    你缺少的是这个。这个

    class window.CoffeeWater.Collections.Histories extends Backbone.Collection
    

    实际上是一个类的定义。它还不是一个对象。您需要初始化它,就像在 java 中一样。所以

    var historyCollection=new window.CoffeeWater.Collections.Histories()
    

    现在你有了一个集合对象。当你这样做

    historyCollection.add(history);
    

    模型的“collection”自动设置为“historyCollection”对象,其中包含一个“url”。所以其实你不需要手动把这个放到选项里面。

    基本上

    attributes = {'start_time': new Date (1434740259016), 'stop_time': new Date (1434740259016 +(86400*1000)), 'valve_id': 2} 
    var historyCollection=new window.CoffeeWater.Collections.Histories()
    var history = new window.CoffeeWater.Models.History(attributes)
    historyCollection.add(history)
    

    【讨论】:

      猜你喜欢
      • 2012-03-01
      • 2013-10-11
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 2016-04-29
      • 2013-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多