Javascript 创建新模型时将模型url与集合url关联
我正在尝试制作一个新模型并将其保存在服务器上。我的问题是,当我执行Javascript 创建新模型时将模型url与集合url关联,javascript,backbone.js,coffeescript,Javascript,Backbone.js,Coffeescript,我正在尝试制作一个新模型并将其保存在服务器上。我的问题是,当我执行model.save(obj)时,它会抛出一个错误必须指定“url”属性或函数 我已经在集合中指定了一个url,我希望使用它 我的代码: class TestModel extends Backbone.Model initialize: -> return; module.exports = TestModel class TestCollection extends Backbone.
model.save(obj)
时,它会抛出一个错误必须指定“url”属性或函数
我已经在集合中指定了一个url,我希望使用它
我的代码:
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)
这引发错误必须指定“url”属性或函数
如果我将addModel函数修改为以下内容,它将正常工作!:
addModel : (data)->
newModel = new TestModel(data)
@add(newModel)
newModel.save()
我做错了什么?我想在save()之后将模型添加到集合中。如果您得到则必须指定一个“url”属性或函数。
错误,因为此操作失败
上一个代码有效,因为添加到集合中的模型引用了model.collection
,所以在本例中save
方法可以。要获得初始代码,您应该向模型提供urlRoot
,如下所示:
class TestModel extends Backbone.Model
urlRoot: '/models'
initialize: ->
return;
module.exports = TestModel
根据:
如果您使用的是集合外部的模型,请指定一个urlRoot,以启用默认url函数根据模型id生成url。“[urlRoot]/id”
尝试@ivarni:Collection.create,但我想了解model.save()在我的代码中为什么不起作用。您还必须为model定义url
属性。集合的url
仅负责获取数据。@最后面的:默认情况下,model.url()的格式为“[Collection.url]/[id]”。另外,这仍然不能解释为什么在调用save之前将模型添加到集合中时它会起作用