在制作新模型时将模型网址与集合网址相关联

时间:2015-08-19 11:36:35

标签: javascript backbone.js coffeescript

我正在尝试创建一个新模型并将其保存在服务器上。我的问题是,当我执行model.save(obj)时,会抛出错误A "url" property or function must be specified

我已经在集合中指定了一个网址,我希望使用它。

我的代码:

 class TestModel extends Backbone.Model

    initialize: ->
      return;

 module.exports = TestModel



 class TestCollection extends Backbone.Collection

    model: TestModel

    url: '/models'

    parse :(response) ->
        return response.data

    addModel : (data)->
        newModel = new TestModel(data)
        newModel.save()
        @add(newModel)

module.exports = new TestCollection()

我正在调用像这样的addModel函数

Tests = require 'path/to/test collection'
Tests.addModel(data)

这会引发错误A "url" property or function must be specified

如果我将addModel函数修改为以下内容,则可以正常工作! :

addModel : (data)->
        newModel = new TestModel(data)
        @add(newModel)
        newModel.save()

我做错了什么?我想在save()

之后将模型添加到集合中

1 个答案:

答案 0 :(得分:2)

您收到A "url" property or function must be specified错误,因为它在line

上失败了

您的上一个代码有效,因为添加到集合中的模型引用了model.collection,因此在这种情况下save方法可以resolve url。要使您的初始代码正常工作,您应该为您的模型提供urlRoot,如下所示:

class TestModel extends Backbone.Model
   urlRoot: '/models'

initialize: ->
   return;

 module.exports = TestModel

根据documentation

  

如果您正在使用集合外部的模型,请指定urlRoot,以启用默认网址功能,以根据模型ID生成网址。 " [urlRoot] / ID"