Backbone:Uncaught Error:保存模型时必须指定“url”属性或函数

时间:2015-01-30 12:32:14

标签: backbone.js

我确实阅读了很多有关此特定讯息的问题,但它们似乎并不适用于我的情况。

我有这个型号:

app.Template = Backbone.Model.extend({
  defaults: {
    name: '',
    templateType: null,
    content: '',
    defaultOfType: false,
    createdAt: null,
    updatedAt: null
  }
});

此系列:

var Templates = Backbone.Collection.extend({
  model: app.Template,
  url: '/templates'
});

app.Templates = new Templates();

在我的路由器中:

this.view = new app.TemplateFormView({ model: new app.Template() });

在那个观点中:

initialize: function() {
  this.listenTo(app.Templates, 'add', this.editTemplate);
  app.Templates.add(this.model);
  // rendering function, other stuff
},

saveMyTemplate: function(e) {
  e.preventDefault();

  var formData = {};
  var oldData = this.model.previousAttributes();

  $(e.target).closest("form").find(":input").each(function() {
    var el = $(this);
    formData[el.attr("id")] = el.val();
  });

  this.model.set(formData).save();
}

当我尝试保存模型时,我收到此错误:

Uncaught Error: A "url" property or function must be specified

如您所见,url在集合中设置,模型是集合的一部分。想知道为什么模型似乎不是该集合的成员?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可能希望查看model.urlRoot参数。

  

如果您正在使用集合外部的模型,请指定urlRoot,以启用默认URL函数以根据模型ID生成URL。 “[urlRoot] / ID”   通常,您不需要定义它。请注意,urlRoot也可能是一个函数。

同时检查您的引用是否适用于app和app.Templates。