【问题标题】:Why backbone add extra parameter to url path?为什么骨干向 url 路径添加额外的参数?
【发布时间】:2013-11-14 10:01:05
【问题描述】:

我正在使用backbone.marionette (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 路径?感谢您抽出宝贵时间阅读本文,感谢您的帮助。

【问题讨论】:

    标签: backbone.js marionette


    【解决方案1】:

    您在模型上错误地设置了urlRoot。应该是

    Backbone.Model.extend ({
      urlRoot: "path",
      // etc
    });
    

    Backbone 会自己添加 id。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多