Backbone.js 为什么要在url路径中添加额外的参数?

Backbone.js 为什么要在url路径中添加额外的参数?,backbone.js,marionette,Backbone.js,Marionette,我正在使用backbone.marionete(1.0.0)和node.js(0.10.22)。不知道为什么在我尝试使用node.js REST调用保存模型数据时要添加额外的参数 model.js Backbone.Model.extend ({ urlRoot: function (){ return '/path/' + myApp.companyId; }, defaults: { companyId: '', //

我正在使用backbone.marionete(1.0.0)和node.js(0.10.22)。不知道为什么在我尝试使用node.js REST调用保存模型数据时要添加额外的参数

model.js

 Backbone.Model.extend ({
     urlRoot: function (){
         return '/path/' + myApp.companyId;
    },
    defaults: {
       companyId: '',
       // other attributes
    },
    // doesn't use 'id' in model instead companyId
    idAttribute: 'companyId'
}))

在加载视图之前,我将使用发布了
model.fetch()
myApp.request('entities:myModel')
请求模型数据,node.js后端将触发
GET/path/1
路由。没问题

但是,当在视图上单击更新按钮时,将触发this.model.save()
PUT/path/1/1
。它应该是
PUT/path/1
,url路径中只有一个“1”

view.js:

clicked: function () {
   var formData = Backbone.syphon.serialize (this);
   this.model.set (formData);
   var promise =  this.model.save ();
   promise.done ().fail ()
}

如何阻止backbone.sync向url路径追加额外参数?感谢您抽出时间阅读本文,并感谢您的帮助。

您在模型上设置的
urlRoot
不正确。应该是

Backbone.Model.extend ({
  urlRoot: "path",
  // etc
});
主干将自己添加ID

如果要在函数中指定ID,请使用
url
函数